最近の投稿を使って、抜粋した文章(5行)に対して、あえて改行させたい

0
いいねをした人: 居ません
  • このトピックには2件の返信、2人の参加者があり、最後にアバター画像林剛史により1年、 4ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • 投稿者
    投稿
  • #115205
    アバター画像林剛史
    閲覧者
    1

    【お使いの Snow Monkey のバージョン】バージョン: 18.2.0
    【お使いの Snow Monkey Blocks のバージョン】バージョン 17.0.2
    【お使いの Snow Monkey Editor のバージョン】バージョン 9.0.1
    【お使いのブラウザ】Chrome
    【当該サイトのURL】local

    ※初めての投稿失礼致します。書き方情報不足等あるかと思いますが、ご指導ご鞭撻の程お願い致します。

    ### 実現したいこと

    タイトルの通り、最近の投稿に対して、本文の文章を抜粋し、かつ改行を「含む」形で投稿一覧に表示させたいのですが、うまくいかず困っています。

    やりたいこと簡単に2点でまとめますと、

    ・文章を抜粋したい(5行)
    ・投稿した文章の5行目までを改行を「含んだ」形で抜粋したい

    となります。

    ### 発生している問題

    $content = $content = wp_trim_words(the_content());
    

    ↑このコードを使用すると、改行が含まれるが、本文の文字制限がうまくいかない。

    get_the_content();
    $content = wp_strip_all_tags( ob_get_clean());
    $content = wp_trim_words(get_the_content());

    ↑コチラのコードは文字制限はうまくいきますが、改行ができていません。

    ### 試したこと

    /wp-content/themes/snow-monkey/template-parts/loop/entry-summary/content/content.php
    

    コチラのファイルで文字の上記①、②を試しています。
    元々のコードと差し込んで試したコードはコチラです。

    <!--?php
    /**
     * @package snow-monkey
     * @author inc2734
     * @license GPL-2.0+
     * @version 13.0.0
     */
    use Framework\Helper;
    $_post_type = get_post_type();
    $entries_layout = get_theme_mod( $_post_type . '-entries-layout' );
    $args = wp_parse_args(
    	// phpcs:disable VariableAnalysis.CodeAnalysis.VariableAnalysis.UndefinedVariable
    	$args,
    	// phpcs:enable
    	[
    		'_entries_layout' => $entries_layout,
    		'_excerpt_length' => null,
    	]
    );
    
    /**
     * Callback for excerpt_length
     *
     * @global array $args The template part args.
     * @param int $number The maximum number of words. Default 55.
     * @return int
     */
    $entry_summary_content_excerpt_length = function( $number = null ) use ( $args ) {
    	return Helper::entry_summary_content_excerpt_length(
    		$args['_excerpt_length'],
    		$args['_entries_layout'],
    		$number
    	);
    };
    
    add_filter( 'excerpt_length', $entry_summary_content_excerpt_length, 100 );
    ob_start();
    the_excerpt();  // ここから修正して②のコードを試しました。
    $content = wp_strip_all_tags( ob_get_clean() );
    
    // ここに①のコードを試しました。
    remove_filter( 'excerpt_length', $entry_summary_content_excerpt_length, 100 );
    
    if ( ! $content ) {
    	return;
    }
    ?>

    1.  編集しているファイルは間違ってはないでしょうか?

    2. 「5行目までの本文を抜粋」したいという場合、wp_trim_wordsを使用するという考え方は間違っていないでしょうか?(単語数は変わらないが、文字数は変わるため)

    3.  本文文章の抜粋、かつ改行を含む形での実装がより容易な考え方あればご教授いただけますとうれしいです。

    以上となります。
    1 , 2 , 3 のどれでも良いので、詳しい方教えていただけますと幸いです。

    0
    いいねをした人: 居ません
    #115216
    アバター画像キタジマ タカシ
    参加者
    2260
    $content = $content = wp_trim_words(the_content());

    ↑このコードを使用すると、改行が含まれるが、本文の文字制限がうまくいかない。

    コード的にはこうじゃないですかね?(やりたいことは実現できないと思いますが…)

    ob_start();
    the_content();
    $content = wp_trim_words(ob_get_clean());

    1. 編集しているファイルは間違ってはないでしょうか?

    「対象とするファイル」はそれで良いのではないかと思いますが、/wp-content/themes/snow-monkey/ 内のファイルを直接編集しているのであれば問題があります。Snow Monkey をアップデートすると /wp-content/themes/snow-monkey/ 内のファイルはネット上からダウンロードされた最新のファイルで全て置き換えられるので、/wp-content/themes/snow-monkey/ 内のファイルを直接書き換えているとそのときに最新のファイルに置き換わって、編集した部分もなくなってしまうためです(これは Snow Monkey 独自の挙動ではなく WordPress 本体・プラグイン・テーマの標準的な挙動です)。

    従って、もし直接編集されているのであれば、直接編集するのではなくテンプレートパーツを上書きする、フックを使う、といったカスタマイズ方法が推奨されます。

    2. 「5行目までの本文を抜粋」したいという場合、wp_trim_wordsを使用するという考え方は間違っていないでしょうか?(単語数は変わらないが、文字数は変わるため)

    wp_trim_words() は内部で wp_strip_all_tags() するので、そこで改行タグも消えちゃうのではないですかね?

    3. 本文文章の抜粋、かつ改行を含む形での実装がより容易な考え方あればご教授いただけますとうれしいです。

    そもそもの話として、「改行」が具体的に何かを決めないといけないのでは?と思いました。例えば、HTML 的に

    <p>あいうえお</p>
    <p>かきくけこ</p>

    という文章があったとして、これは見た目上は(1行空きで)改行されていますよね。また、

    <p>あいうえお<br>かきくけこ</p>
    

    も見た目上は(空き無しで)改行されていますよね。またまた

    <div class="smb-alert">あいうえお</div>
    <p>かきくけこ</p>

    も見た目上は改行されていますよね。

    それぞれのパターンで、抜粋ではどのような HTML で出力させたいのかがよくわかりませんでした。もし、これらを全て

    あいうえお<br>かきくけこ
    

    で出力させたいということであれば、ちょっとどうやるのか僕にはわからないです…

    0
    いいねをした人: 居ません
    #116256
    アバター画像林剛史
    閲覧者
    1

    返信が遅くなり、申し訳ございません。。。

    また、細かくご説明いただきありがとうございます。

     

    色々と試行錯誤しておりましたが、結論としては、改行させるのは諦めて

    文字制限のみとし、改行させたい場合、Wordpressの右下の方にある抜粋を使用するように致しました。

    本件は、一旦解決としトピックを閉じます。
    キタジマ様、ありがとうございました。

    1
    いいねをした人:
3件の投稿を表示中 - 1 - 3件目 (全3件中)
  • トピック「最近の投稿を使って、抜粋した文章(5行)に対して、あえて改行させたい」には新しい返信をつけることはできません。

ドキュメント

Snow Monkey の設定方法やマニュアルを掲載しています。

ドキュメント

フォーラム

Snow Monkey の使い方やカスタマイズについてのご質問・ご要望等はサポートフォーラムで行っています。サポートフォーラムは誰でも閲覧できますが、書き込みできるのは Snow Monkey 購入者のみとなります。

サポートフォーラム

よくあるご質問

Snow Monkey のサービスについて不明な点がある場合は、まずはよくあるご質問をご確認ください。

よくあるご質問

お問い合わせ

よくあるご質問を見ても解決しなかった場合、試用版の申請については問い合わせフォームからお願いいたします。

お問い合わせ

Snow Monkey は Gutenberg ブロックエディターに対応した 100%GPL の WordPress テーマです。拡張性を意識した開発をおこなっており、カスタマイザーとブロックでスピーディーにサイトを立ち上げるだけでなく、CSS やフックを駆使した高度なカスタマイズにも柔軟に対応できます。