-
投稿者投稿
-
2022年12月11日 1:31 PM #115205
【お使いの 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いいねをした人: 居ません2022年12月11日 2:26 PM #115216$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いいねをした人: 居ません2023年1月14日 3:58 PM #116256 -
投稿者投稿
- トピック「最近の投稿を使って、抜粋した文章(5行)に対して、あえて改行させたい」には新しい返信をつけることはできません。