使用此代码
<?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.'">';
?>
在我的标题中输出的内容如下:
<meta name="description" content="[wptabs mode=horizontal background=false] [wptabtitle] English Lyrics[/wptabtitle] [wptabcontent]Speed Circus Yeah A-yoWOO TAEWOON with the am I ...">
我想知道我是否可以在代码中添加一些可以摆脱短代码的东西?或者其中的任何内容?
也许这样吗?
<meta name="description" content="Speed Circus Yeah A-yoWOO TAEWOON with the am I ...">
答案 0 :(得分:1)
需要做的是渲染帖子而不显示帖子内容。这里略有不同。
你应该尝试使用:
apply_filters('the_content', $post->post_content);
而不是:
$post->post_content
当您对内容应用过滤器时,您会收到显示给用户的帖子,而$ post-&gt; post_content会显示帖子的原始内容。
答案 1 :(得分:1)
有删除短代码的功能。
https://codex.wordpress.org/Function_Reference/strip_shortcodes
将它放在echo之前:
$descrip = strip_shortcodes( $descrip );
鉴于您要在属性中输出它,您应该使用该函数来转义属性。 esc_attr()
。您可以在此处找到有关此内容的更多信息:https://codex.wordpress.org/Function_Reference/esc_attr
基于您的答案留下的代码和评论的完整示例:
<?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;
$descrip = strip_shortcodes( $descrip );
echo '<meta name="description" content="' . esc_attr( get_the_title( $post->ID ) . trim( $descrip ) ) . '">';
?>