WordPressの抜粋を作成およびカスタマイズする方法
公開: 2020-04-16抜粋は、投稿に関連付けられたオプションのテキストです。 ほとんどの場合、投稿の概要として使用されます。 新しいエディターを使用している場合は、サイドバーに「抜粋」というオプションがあることがわかります。

表示されない場合は、グーテンベルクの設定からオプションを有効にする必要があります。 エディターの右上隅にある省略記号アイコンをクリックしてから、[オプション]をクリックします。

次に、抜粋を探して有効にします。

テーマの構成方法に応じて、ブログの投稿や検索結果などを見ると抜粋が表示されます。たとえば、ブログでは、すべての投稿が関連する抜粋とともにどのように表示されるかを確認できます。

さて、この抜粋を書くことは常に必須ですか? そうでない場合、WordPressは何をしますか? それは何かを示していますか、それともまったく示していませんか? さて、私たちはこれらの質問に答えるつもりです、そして私たちはWordPressが私たちに抜粋をカスタマイズするために提供するオプションを詳しく見ていきます。
WordPressの抜粋のしくみ
WordPressには、投稿の抜粋を取得するためのget_the_excerptとthe_excerptの2つの関数があります。 どちらもwp-includes/post-template.phpで定義されており、それらのソースコードを見ると、 get_the_excerptの結果をechoするだけであることがわかります( the_excerptでフィルタリングしたthe_excerpt )。 したがって、基本的に、WordPressで抜粋がどのように機能するかを知るために理解する必要があるのはget_the_excerpt関数だけであると大まかに言うことができます。
ご覧のとおり、 get_the_excerptは非常に単純です。
function get_the_excerpt( $post = null ) { // ... $post = get_post( $post ); if ( empty( $post ) ) { return ''; } // ... return apply_filters( 'get_the_excerpt', $post->post_excerpt, $post ); } 基本的に、投稿をロードし(設定しない場合は、WordPressループで使用可能な投稿を使用します)、 post_excerpt属性を返します。 つまり、抜粋がないということは、WordPressが最終的に何も表示しないということですよね?
そんなに速くない、相棒。
この関数は実際にはpost_excerptの値を直接返さないことに注意してください。 代わりに、get_the_excerptという新しいフィルターを使用してフィルター処理します。 したがって、そのフィルターに関連付けられたアクションがある場合、最終結果は変更される可能性があり、空の文字列ではなくなります…
そして確かに、それがここで起こっていることです! 特定の投稿の抜粋を書かない場合、これはフロントエンドに表示されるものです。

私たちの投稿の最初の言葉は、WordPressが生成する抜粋です。
wp_trim_excerpt関数
WordPressのソースコードでクイック検索を実行すると、デフォルトでは、 get_the_excerptフィルターに関連付けられているアクションは1つだけであることがわかります。 具体的には、 wp-includes/default-filters.php filters.phpで、 wp_trim_excerptという名前の関数がフックされていることがわかります。
WordPressのドキュメントによると、 wp_trim_excerptは、最大55語の抜粋と、必要に応じて省略記号を追加する役割を果たします。 そして、ここに重要な点があります。この関数は、抜粋がまだない場合は「必要」であると見なします(これは、一般に、ユーザーが抜粋をエディターに書き込んでいないことと同じです)。 これは、関数のソースコードで確認できます。
function wp_trim_excerpt( $text = '', $post = null ) { $raw_excerpt = $text; if ( '' == $text ) { $post = get_post( $post ); $text = get_the_content( '', false, $post ); // [...] » Generates the excerpt using the post content } return apply_filters( 'wp_trim_excerpt', $text, $raw_excerpt ); } 見る? 抜粋がない場合( $textは空の文字列)、現在の投稿のコンテンツ( $postからget_the_content )を取得し、それを使用して抜粋を生成します。

この時点から、WordPressが実際にソースコードを生成する方法を掘り下げて発見することができます。 ただし、すでにアイデアは得られていると思います。このトピックに光を当てるため、ドキュメントをもう一度見てみましょう。
必要に応じて省略記号を追加して、最大55語を返します。 55ワードの制限は、
excerpt_lengthフィルターを使用してプラグイン/テーマで変更できます。 '[…]'文字列は、excerpt_moreフィルターを使用してプラグイン/テーマで変更できます。wp_trim_excerptドキュメント
これで、WordPressが投稿用に生成する自動抜粋を完全にカスタマイズするために知っておくべきことがすべてわかりました。
自動抜粋をカスタマイズする方法
今日の投稿で見たフィルターを使用して、自動抜粋をカスタマイズする方法の例をいくつか見てみましょう。 ちなみに、これらの変更をWebサイトに追加するには、プラグインを作成する必要があることを忘れないでください。
a)抜粋で必要な単語数を変更する方法
これは最も単純なものの1つです。 抜粋に必要な単語数を選択するためのexcerpt_lengthフィルターを自由に使用できることはすでに見てきたので、それを使用してみましょう。
function nelio_100_word_excerpts( $length ) { if ( is_admin() ) { return $length; } return 100; } add_filter( 'excerpt_length', 'nelio_100_word_excerpts', 99 ); 関数で最初に行うことは、フロントエンドにいることを確認することです。 ダッシュボード( is_admin )を使用している場合は、抜粋を使用しない方がよいでしょう。 「安全な環境」にいることを確認したら、マジックナンバーを返すだけです。 私の場合:100語。
b)自動抽出後に表示されるテキストを変更する方法
これも非常に簡単です。これは、フィルターがあることをすでに確認しているためです。
function nelio_clickable_read_more( $more ) { if ( is_admin() ) { return $more; } return sprintf( '<a href="%s">Tell me more!</a>', esc_url( get_the_permalink() ) ); } add_filter( 'excerpt_more', 'nelio_clickable_read_more', 99 );この場合、「Tell memore!」というテキストを返すだけです。 要約の後に、ユーザーがクリックできるようにリンクを作成します。
c)抜粋の長さを特定の文字数に制限する方法
wp_trim_words関数には、WordPressが使用する最終的な抜粋を変更するために使用できる同じ名前のフィルターがあります。 それでは、それを使用しましょう:
function nelio_140_char_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } return mb_substr( $excerpt, 0, 140 ); } add_filter( 'wp_trim_excerpt', 'nelio_140_char_excerpts', 99, 2 ); wp_trim_wordsフィルターは、自動およびユーザー定義の抜粋の両方に適用されます。 私の例では、自動的に生成された抜粋の変更にのみ関心があるため、新しい条件を追加する必要があります。 覚えているかと思いますが、 wp_trim_wordsは、元の抜粋が空の場合にのみ自動抜粋を生成するため、これをチェックするだけで目的の結果が得られます。
一方、従来のsubstr関数の代わりにmb_substrを使用したことに注意してください。 理由がわからない場合は、理由は簡単です。英語以外の言語でブログを作成する場合は、マルチバイト文字を使用している可能性があり、 substrを使用してマルチバイト文字列を短縮すると問題が発生する可能性があります。 詳細については、PHPのドキュメントをお読みください。
d)コンテンツの最初の段落で抜粋を作成する方法
そして最後に、投稿の最初の段落を正確に使用して抜粋を作成する方法の例。 今回は説明がないので、私がしていることに注意してください。
function nelio_first_paragraph_excerpts( $excerpt, $raw_excerpt ) { if ( is_admin() ) { return $excerpt; } if ( '' !== $raw_excerpt ) { return $excerpt; } $content = apply_filters( 'the_content', get_the_content() ); return substr( $content, 0, strpos( $content, '</p>' ) + 4 ); } add_filter( 'wp_trim_excerpt', 'nelio_first_paragraph_excerpts', 99, 2 );要するに…
WordPressの大きな力は、その拡張性にあります。 今日は、WordPressが投稿の抜粋を生成する方法と、WordPressが提供するすべてのフィルターと関数を詳細に見て、最終結果をニーズに合わせてカスタマイズします。
今日の投稿が気に入っていただけたでしょうか。 より多くの人がWordPressの利点を知っているように、それを友達と共有してください!
UnsplashのAaronBurdenによる注目の画像。
