我正在为我的 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 字符串的截止点,但我将把它作为一个单独的问题。
更新:这是我发布的问题-> mb_substr 截断帖子摘录中的单词?