the_title
the_content
また、Wordpress コアにも存在します。それらは多くのことに利用されています。フックとは何かを知っていれば、このような行が役立つ理由は明らかです。
フィルター フックとアクション フックは、本質的に洗濯物のリストです。関数を次々とフックに配置して、キューを形成することができます。このフックが (do_action
およびapply_filters
それぞれによって) 呼び出されると、Wordpress は次から次へと関数のキューを解除します。それがそうであるように、それはそれらを実行します。
add_action( 'test', 'func1' );
add_action( 'test', 'func2' );
do_action( 'test' ); // Executes func1 and then func2
アクションとフィルターの違いは、どちらも値を受け入れることができますが、フィルターのみが変更された値を返すことです。アクションは、それ自体で重要なことを行います。フィルターは値を受け取り、後で使用できるように変更されたバージョンを返します。たとえば、印刷されるすべてのタイトルを大文字にthe_title
するには、次のコードを使用できます。
add_filter( 'the_title', function( $title ) {
return strtoupper( $title );
});
関数ではなくフックにフックされたすべてthe_title
の関数が実行されることがわかっているapply_filters
ため、 function のどこかでそれを見つけることを期待していますthe_title
。実際、その機能は基本的echo get_the_title
に次のget_the_title
とおりです。
function get_the_title( $id = 0 ) {
$post = &get_post($id);
$title = isset($post->post_title) ? $post->post_title : '';
$id = isset($post->ID) ? $post->ID : (int) $id;
if ( !is_admin() ) {
if ( !empty($post->post_password) ) {
$protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
$title = sprintf($protected_title_format, $title);
} else if ( isset($post->post_status) && 'private' == $post->post_status ) {
$private_title_format = apply_filters('private_title_format', __('Private: %s'));
$title = sprintf($private_title_format, $title);
}
}
return apply_filters( 'the_title', $title, $id );
}
ソース コード内のフックを探すことを学ぶことは急成長中の Wordpress 開発者にとって最も重要であるため、関数全体を投稿します。ソース コードにはフックが散らばっているので、それらを使用して、Wordpress の組み込み関数の多くの側面を変更できます。ソースコードを見つけapply_filters( 'the_title', ... )
たので、その重要性を理解できます!
the_title
によって与えられた値をエコーするだけで、フックにフィルターを付けることで返されるget_the_title
値を変更したり、置き換えたりすることもできます!get_the_title
the_title
さて、私がこれまで書いてきたことすべてが不当だと思わないでほしい。実際、「なぜ機能しないのですか?」という主な質問に簡単に答えることができます。
まず第一にthe_title
、関数に渡すことはできません! 書くようなものsomefunction( $var1, echo $var2, $var3 )
です。echo はその出力をブラウザーに送信するため、echo を使用して関数に値を渡すことはできません。
より良い試みはあなたが投稿したものです
$page_title = apply_filters('the_title',get_the_title());
しかし、これまで見てきたように、戻り値にはすでにget_the_title
適用されています。the_title
これらすべての機能をもう一度適用するだけです。カスタム フィルタがアタッチされているthe_title
場合や、何もできない場合は、おかしな結果になる可能性があります。したがって、結果を混乱させるか、不当です。これが、単純にこれを行う必要がある理由です。
$page_title = get_the_title();
さて、あなたも言った
タイトルを表示しない 1 ビットのコードを除いて、すべて正常に動作しています
これは紛らわしいです。なぜなら、変数の代入が何かを出力するとは思わないからです! タイトルを出力するには、これを行うことができます
$page_title = get_the_title();
echo $page_title;
しかし、私たちが学んだように、これは実際には (わずかな違いについてはソース コードを見てください)、次のものと同じです。
the_title();
したがって、おそらく単独で使用したいという結論に達するために、かなり多くのことを書きましたthe_title
。しかし、これがフィルター/アクション フックに関する優れたリソースになることを願っています。
ご質問は大歓迎です。