我手边有一个非常简单的插件,可以为博客添加元描述。我稍微修改了它以显示OpenGraph协议和Dublin Core中的描述。这很容易。
但是我在搜索结果中发现每个页面都显示了描述。
现在我想添加一条规则,告诉插件是否在Posting中,它应该只显示the_excerpt。
我的想法是简单地添加一些规则并随之而去。但我不得不发现插件是用<来调用的。 ?php wp_head(); ? > 因为我总是先尝试一下我检查了插件,似乎我找到了一种方法来改变来自
的电话add_action( 'wp_head', 'vsmd_meta_description' );
到
add_action( 'wp_head_desc', 'vsmd_meta_description' );
现在我添加<头>一个新的电话< ?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 '';
}
?>
快乐。 嗯,这并不是那么容易,因为它只在Source中显示&lt; ?php wp_head_desc(); ? &GT;所以我感到很茫然,因为我所发现的只是一些关于钩子的东西,我完全不理解。 我所意识到的是,我对插件add_action的更改确实将其从&lt; ?php wp_head(); ? &GT; ..所以我相信我接近成就,但现在我不知道如何完成它。
有人可以告诉我如何调用插件吗?
请 Caylean
答案 0 :(得分:1)
只需将 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 '';
}
}
更改为
{{1}}
答案 1 :(得分:0)
感谢Arshid KV向我展示了如何编辑插件我能够得到我想要的东西。这不是完美的方式,但工作得很好。
我使用了WP插件非常简单的元描述,因为我想只有描述而没有所有的SEO Hokus Pokus你可以使用许多其他插件。
插件需要从
重写// 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上的描述,但在Postings或其他网站中没有更多。 在那之后我不得不在Header中编辑一下,用规则和the_excerpt调出所需的Postings描述,一段时间之后有效但还需要更多调整以避免使用简单创建的任何unnessasary标签和链接&LT; ?php the_excerpt(); ? &GT; 所以在最后,我有修改过的插件文件和&lt;头&gt;之后的部分&lt; ?php wp_head(); ? &GT;我添加了我的规则:
<?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