我手头有一个非常简单的插件,可以向博客添加元描述。我稍微修改了一下,以显示OpenGraph协议和都柏林核心中的描述。那是容易的部分。
但是我在搜索结果中发现描述显示在每个页面。
现在我想添加一个规则,可以告诉插件,如果它是在一个张贴,它应该只是显示_摘录。
我的想法是简单地添加一些规则,并与它一起去。但是我不得不发现插件是用 php wp_head ();?>因为我总是先尝试,所以我检查了插件,似乎我找到了一种方法来改变
的调用add_action( 'wp_head', 'vsmd_meta_description' );
add_action( 'wp_head_desc', 'vsmd_meta_description' );
现在我加入
new call php wp_head_desc ();?>检查它是否有效,定义规则<?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 '';
}
?>
和快乐。好吧,这不是那么容易的,因为它只显示在源头 php wp_head_desc ();? 所以我很困惑,因为我发现了一些关于钩子的东西,我完全不理解。我所意识到的是,我在插件add_action的变化,确实从被 php wp_head ();?> . .所以我相信我已经接近成功了,但是现在我不知道如何去完成它。
可能有人能启发我如何我可以调用插件?
请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 wp_head ();?>我添加了我的规则:<?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