その宣言以外にwp_trim_excerpt()への参照はないようです - 私はTracとXrefの両方をチェックしました - いつそれがその魔法を働かせるのですか?
XRefを既に見たことがあるなら、docブロックの一番上にこのコメントを見ました。
/**
* Generates an excerpt from the content, if needed.
そのため、コアでは使用されていませんが、必要に応じて使用できます。
何が起こっているのか少し説明しましょう。
excerpt_lengthとexcerpt_moreはwp_trim_excerptの中にあり、それらを変更すると実際にthe_excerptとget_the_excerptが変更されます。そのため、wp_trim_excerptはどこかで何かをしなければなりません。
はいといいえ。 excerpt_length
とexcerpt_more
はフィルタによって生成されています。これがwp_trim_excerpt()
関数の内部です。
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
デフォルトでは、$excerpt_length
は55
に設定され、$excerpt_more
は[...]
に設定されます。ただし、テーマとプラグインでこれを変更できます。代わりに、切り取られた抜粋の長さを70文字にしたいとしましょう。私は次のようなコードを使います。
function set_new_trim_length( $excerpt_length ) {
return 70;
}
add_filter( 'excerpt_length', 'set_new_trim_length' );
後でwp_trim_excerpt()
を呼び出すと、WordPressはそのデフォルト値の55
を私のフィルタ関数に渡します。私のフィルタ関数は70
を返し、wp_trim_excerpt()
は代わりにそれを使います。
wp_trim_excerpt()
は、呼び出し時にexcerpt_length
またはexcerpt_more
を設定または変更しません。関数は単にあなたがそれらの変数のために既に定義したどんなフィルタでも使用します。
しかし、あなたがthe_excerptまたはget_the_excerptを呼び出すとき、それらはそれらのフィルタによって修正されます、それで私が知りたいのはそれらがそれらのフィルタによって修正される「いつ」です。
これはすべて、コンテンツの構築方法によって異なります。生成されたコンテンツからget_the_excerpt()
関数に渡されるフィルタがwp_trim_excerpt()
に適用されます。
そのため、抜粋を手書きすると、手書きの内容は変更されずにそのまま通過します。
抜粋($post->post_excerpt = ''
)を書かないと、投稿の内容はwp_trim_excerpt()
に渡されて短縮され、返されます。
参考のために、このフィルターは/wp-includes/default-filters.php
の 147行目 に追加されています。
add_filter( 'get_the_excerpt', 'wp_trim_excerpt' );