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