0

我正在为我的 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 截断帖子摘录中的单词?

4

0 回答 0