我的主题中的标题我为元描述创建了以下代码:
<?php if (is_single() || is_page()) { ?>
<meta name="description" content="<?php echo metadesc($post->ID); ?>" />
<?php }else{ ?>
<meta name="description" content="<?php bloginfo('description'); ?>" />
<?php } ?>
并将此代码包含在我的function.php中:
function metadesc($pid) {
$p = get_post($pid);
$description = strip_tags($p->post_content);
$description = str_replace ("\n","",$description);
$description = str_replace ("\r","",$description);
if (strlen($description) > 150) {
return htmlspecialchars(substr($description,0,150) . "...");
}else{
return htmlspecialchars($description);
}
}
现在我想将category_description合并到主题标题中:
<?php if ( is_category() ) { echo category_description(); } ?>
你能帮帮我怎么办?感谢
答案 0 :(得分:1)
你已经完成了大部分工作:
<?php
if( is_single() || is_page() ) $description = strip_tags($post->post_content);
elseif( is_category() ) $description = category_description();
else $description = get_bloginfo( 'description' );
$description = substr($description,0,150);
?>
<meta name="description" content="<?= $description ?>" />
如您所见,我会忘记您在metadesc()
中所做的所有清理工作,只是用strip_tags()
删除html,但我认为无需删除换行符或转换为html实体,当然我认为搜索引擎根本不会想到换行符或&
或&
。
另外,无需检查说明的长度。试着截断它,如果它的长度小于150个字符,substr()
将返回整个字符串不变。
修改强>
如果您希望使用正在使用的metadesc()
函数,则可以通过这种方式回复您的评论:
function metadesc() {
global $post;
if( is_single() || is_page() ) $description = strip_tags($post->post_content);
elseif( is_category() ) $description = category_description();
else $description = get_bloginfo( 'description' );
$description = substr($description,0,150);
return $description;
}