我正在为我的wordpress网站使用自定义主题。
post.class.php中的此代码控制帖子摘录的外观:
function get_excerpt($post, $ln){
if (!empty($post->post_excerpt)) {
if (strlen(strip_tags(strip_shortcodes($post->post_excerpt))) > $ln) {
echo mb_substr(strip_tags(strip_shortcodes($post->post_excerpt)), 0, $ln) . '[...]';
} else {
echo strip_tags(strip_shortcodes($post->post_excerpt));
}
} else {
if (strlen(strip_tags(strip_shortcodes($post->post_content))) > $ln) {
echo mb_substr(strip_tags(strip_shortcodes($post->post_content)), 0, $ln) . '[...]';
} else {
echo strip_tags(strip_shortcodes($post->post_content));
}
}
}
如何编辑上面的代码,以便不剥离短代码和html格式?
这是用于配置帖子摘录(同一文件)中显示的字符数的代码:
<div class="excerpt">
<?php
if ( is_user_logged_in() ) {
$ln = 800; /*show first 800 characters*/
post::get_excerpt($post, $ln = $ln);
} else {
if ( !tools::is_nsfw( $post -> ID ) ) {
the_excerpt();
}else{
echo '<p>' . options::get_value( 'general' , 'nsfw_content' ) . '</p>';
}
}
?>
</div>
更新:这是我最终用来显示html格式的代码:
function get_excerpt($post, $ln){
if (!empty($post->post_excerpt)) {
if (strlen($post->post_excerpt) > $ln) {
echo mb_substr(($post->post_excerpt), 0, $ln);
}
} else {
if (strlen($post->post_content) > $ln) {
echo mb_substr(($post->post_content), 0, $ln);
}
}
}
我取出了strip_tags和strip_shortcodes,使代码更加简化。我仍然需要弄清楚如何格式化mb_substr字符串的截止点,但我会把它作为一个单独的问题。
更新:这是我发布的问题 - &gt; mb_substr cutting off words in post excerpt?