我已经使用此代码很长时间了:
$temp_arr_content = explode(
" ",
substr(
strip_tags(
get_the_content()
),
0,
720
)
);
$temp_arr_content[count( $temp_arr_content ) - 1] = "";
$display_arr_content = implode( " ", $temp_arr_content );
echo $display_arr_content;
if( strlen( strip_tags( get_the_content() ) ) > 0 )
echo "...";
为了将我的内容限制为720个字符,并从中删除html,今天我在新主题中再次使用了它,但我注意到它还输出html代码(html代码不起作用,但显示在内容中)
我在主题中也使用了此代码:
$excerpt = get_the_excerpt();
echo string_limit_words( $excerpt, 55 );
这是我函数中的代码。php:
function string_limit_words( $string, $word_limit ) {
$words = explode( \' \', $string, ( $word_limit + 1 ) );
if( count( $words ) > $word_limit )
array_pop( $words );
return implode( \' \', $words );
}
然而,为了限制字数并剥离HTML,当我将55改为150时,代码不起作用,仍然显示55个字<有人能帮我解决这个问题吗?谢谢
最合适的回答,由SO网友:Chip Bennett 整理而成
首先,我不会修改content. 从语义上讲,您正在处理excerpt, 所以让我们把重点放在这一点上。
其次,为了限制摘录返回的字数,simply filter excerpt_length
:
<?php
function wpse52673_filter_excerpt_length( $length ) {
// Return (integer) value for
// word-length of excerpt
return 150;
}
add_filter( \'excerpt_length\', \'wpse52673_filter_excerpt_length\' );
?>
使用的附加好处
the_excerpt()
对于自动生成的摘录,
no HTML is parsed. 因此,如果不使用用户定义的摘录,那么就完成了。
但是,如果您确实使用了用户生成的摘录,但仍然想去掉HTML标记,只需删除any or all of the following filters that are applied to the_excerpt
:
add_filter( \'the_excerpt\', \'wptexturize\' );
add_filter( \'the_excerpt\', \'convert_smilies\' );
add_filter( \'the_excerpt\', \'convert_chars\' );
add_filter( \'the_excerpt\', \'wpautop\' );
add_filter( \'the_excerpt\', \'shortcode_unautop\');
要删除一个,只需调用,例如:
remove_filter( \'the_excerpt\', \'wptexturize\' );