抜粋自体が空白または空の場合に抜粋投稿を調整するにはどうすればよいですか。私は見て、the_excerpt
フィルタのコードは空かどうかをテストし、抜粋が空の場合はapply_filters
が呼び出される前に戻ります。これはたいていの場合おそらく理にかなっています。可能であれば「デフォルト」の抜粋を設定します。
https://core.trac.wordpress.org/browser/tags/4.7/src/wp-includes/post-template.php#L380
抜粋を調整する別の方法があると思いますが、まだ見つけていません。ありがとうございました!
Per Vinod Dalviの依頼詳細を追加する。私はこれをtwentysixteen(v1.2)の子テーマで使用していますが、ほとんど空白のWordPressインストールで親テーマのみを使用してこれをテストしました。私は次のコードを使っています。
add_filter( 'the_excerpt', function( $excerpt ) {
die( 'the_excerpt filter was called' );
} );
上記のコードを使用しても、抜粋フィールドが空ではない場合にのみ呼び出されているフィルターを確認できます。また、上記のリンクされたコードでは、空のテストとreturn before フィルターが表示されます。適用されます。
私は自分の問題を見つけました。テーマtwentysixteen(v1.2)では、フィルターtwentysixteen_excerpt
を起動するhas_excerpt
関数を呼び出す前に、抜粋をテストするために関数the_excerpt
を呼び出す関数the_excerpt
を使用しています。 emptyのテストは私がもともと使用していたフィルタget_the_excerpt
に対してのみなので、少なくとも私の混乱の一部です。だからVinod Dalvi答えはあなたが使用しているテーマに応じて正しいです。
オリジナルの質問はTwentysixteenテーマの文脈ではなかったので、そしてVinodの答えは正しいのですが(ほとんどの場合)、私はあなたがTwentysixteenテーマのためにこの仕事をしたいならtemplate-parts/content-single.php
をオーバーライドする必要があると付け加える必要があると感じましたあなたの子供のテーマでテンプレートを作成し、ちょうどthe_excerpt()
(function)のためにtwentysixteen_excerpt
(L16)を削除します。
あなたがpostの抜粋フィールドで手動で設定された抜粋について話しているなら、抜粋が設定されていなければデフォルトの抜粋を表示するためにあなたの子テーマまたはプラグインのfunctions.phpファイルで以下のコードを使うことができます。
function display_default_excerpt( $excerpt ) {
if ( has_excerpt() ) {
return $excerpt;
} else {
return __( 'There is no excerpt so displaying default excerpt.' );
}
}
add_filter( 'the_excerpt', 'display_default_excerpt' );