修改Wordpress Plugin添加Meta Description


Modify Wordpress Plugin to add Meta Description

我手头有一个非常简单的插件,可以向博客添加元描述。我稍微修改了一下,以显示OpenGraph协议和都柏林核心中的描述。那是容易的部分。

但是我在搜索结果中发现描述显示在每个页面。

现在我想添加一个规则,可以告诉插件,如果它是在一个张贴,它应该只是显示_摘录。

我的想法是简单地添加一些规则,并与它一起去。但是我不得不发现插件是用因为我总是先尝试,所以我检查了插件,似乎我找到了一种方法来改变

的调用
add_action( 'wp_head', 'vsmd_meta_description' );

add_action( 'wp_head_desc', 'vsmd_meta_description' );

现在我加入 new call 检查它是否有效,定义规则

<?php
if ( is_single() ) {
  echo '<meta name="description" content="<?php the_excerpt(); ?>" />'."'n";
  echo '<meta name="DC.Description" content="<?php the_excerpt(); ?>" />'."'n";
  echo '<meta property="og:description" content="<?php the_excerpt(); ?>" />'."'n";
} elseif ( is_front_page() ) {
  echo '<?php wp_head_desc(); ?>';
} else {
  echo '';
}
?>

和快乐。好吧,这不是那么容易的,因为它只显示在源头 . .所以我相信我已经接近成功了,但是现在我不知道如何去完成它。

可能有人能启发我如何我可以调用插件?

请Caylean

add_action( 'wp_head', 'vsmd_meta_description' );改为

    add_action( 'wp_head', 'vsmd_meta_description_new' );
        function vsmd_meta_description_new(){
          if ( is_single() ) {
      echo '<meta name="description" content="<?php the_excerpt(); ?>"   />'."'n";
      echo '<meta name="DC.Description" content="<?php the_excerpt(); ?>" />'."'n";
      echo '<meta property="og:description" content="<?php the_excerpt(); ?>" />'."'n";
    } elseif ( is_front_page() ) {
       // code here 
    } else {
      echo '';
    }
  }

感谢Arshid KV,他向我展示了如何编辑插件,我能够得到我正在寻找的东西。这不是一个完美的方式,但工作得很好。

我使用了WP插件非常简单的元描述,因为我想只有描述,没有所有的SEO Hokus Pokus你得到许多其他插件。

Plugin需要从

重写
// include meta description in header 
function vsmd_meta_description() {
    $vsmd_meta = esc_attr( get_option( 'vsmd-setting' ) );
    $vsmd_descr = get_bloginfo( 'description' );
    if (empty($vsmd_meta)) {
        echo '<meta name="description" content="'.$vsmd_descr.'" />'."'n";
        echo '<meta name="DC.Description" content="'.$vsmd_descr.'" />'."'n";
        echo '<meta property="og:description" content="'.$vsmd_descr.'" />'."'n";
    }
    else {
        echo '<meta name="description" content="'.$vsmd_meta.'" />'."'n";
        echo '<meta name="DC.Description" content="'.$vsmd_meta.'" />'."'n";
        echo '<meta property="og:description" content="'.$vsmd_meta.'" />'."'n";
    }
}

// include meta description in header 
function vsmd_meta_description() {
    $vsmd_meta = esc_attr( get_option( 'vsmd-setting' ) );
    $vsmd_descr = get_bloginfo( 'description' );
    if ( is_single() ) {
    echo '';
    } elseif ( is_front_page() ) {
    echo '<meta name="description" content="'.$vsmd_meta.'" />'."'n";
    echo '<meta name="DC.Description" content="'.$vsmd_meta.'" />'."'n";
    echo '<meta property="og:description" content="'.$vsmd_meta.'" />'."'n";
    } else {
    echo '';
    }
}

因为它显示我现在只有描述在Frontpage,但没有更多的帖子或其他网站。在那之后,我不得不在Header中编辑一点,以显示带有规则和_摘录的帖子所需的描述,经过一段时间的工作,但也需要更多的调整,以避免使用简单的<创建任何不必要的标签和链接。? php the_excerpt ();?>所以最后我有了修改后的插件文件,在 我添加了我的规则:

<?php if ( (is_page()) || (is_single()) ) : if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php
$post = $wp_query->post;
$descrip = strip_tags($post->post_content);
$descrip_more = '';
if (strlen($descrip) > 155) {
    $descrip = substr($descrip,0,155);
    $descrip_more = ' ...';
}
$descrip = str_replace('"', '', $descrip);
$descrip = str_replace("'", '', $descrip);
$descripwords = preg_split('/['n'r't ]+/', $descrip, -1, PREG_SPLIT_NO_EMPTY);
array_pop($descripwords);
$descrip = implode(' ', $descripwords) . $descrip_more;
echo '<meta name="description" content="'.$descrip.'"   />'."'n";
echo '<meta name="DC.Description" content="'.$descrip.'" />'."'n";
echo '<meta property="og:description" content="'.$descrip.'" />'."'n";
?>
<?php endwhile; endif; elseif(is_home()) : ?>
<?php endif; ?>

现在它完全像我想要的那样工作了。

如果我能让摘录在插件中工作,它可能会变得更漂亮,因为它会减少需要做的更改,但至少它现在正在工作,这就是我想要的。

请Caylean