我想你想在单数帖子/页面上发布这个,所以你不想设置全局帖子对象,它已经设置好了。
在那之后,问题是get_excerpt
将运行一些添加html实体的筛选器。
这是因为get_the_excerpt
用于页面内容(在<body>
还有一个副作用,当页面上没有手动摘录时,该函数也会调用the_content
过滤器,这可能会导致一些插件的兼容性问题。。。因此,我建议不要使用该函数来偏离描述,而是使用一些低级函数:
经过快速测试后,我认为这应该很好,但可能可以改进:
在里面functions.php
function head_description( $desc = \'\' ) {
$desc = str_replace( \'"\', \'\', html_entity_decode( $desc ) );
$desc = stripslashes( wp_filter_nohtml_kses( $desc ) );
return str_replace( \'&\', \'&\', $desc );
}
然后在
header.php
<head>
<?php
if ( is_singular() ) {
global $post;
$excerpt = $post->post_excerpt ? : wp_trim_words( $post->post_content, 55, \'\' );
$desc = head_description( $excerpt );
} else {
$desc = head_description( \'Foo\' ); // description for non singular pages
}
?>
<meta name="description" content="<?php echo $desc; ?>">
<?php } ?>
请确保在中使用双引号
content=" ... "
因为描述中的单引号不会转义,所以如果使用单引号包装内容,就会出现问题。