Apply_filters()内
apply_filters( $tag, $value, $var ... );
私は頭を$value
と$var
に巻きつけるのに問題があります。私はコーデックスを読みましたが、$value
は変更できますが、$var
は変更できないように思えますが、実際にはこの例が見つかりませんでした。変数を渡す方法として使用されているようです。その場合、それと$var
の違いは何ですか?
より良い名前で関数を見てみてください。
apply_filters(
$filter_name, // used for add_filter( $filter_name, 'callback' );
$value_to_change, // the only variable whose value you can change
$context_1, // context
$context_2 // more context
);
その関数が次のように呼ばれると:
// wp-login.php line 94
apply_filters( 'login_body_class', $classes, $action );
使えます…
add_filter( 'login_body_class', 'function_to_change_login_body_class', 10, 2 );
…そしてその関数に渡される2つの変数を取得します。最初のものを返し、2番目のものはより多くのコンテキストを提供します。
function function_to_change_login_body_class( $classes, $action )
{
if ( 'login' === $action )
$classes[] = 'foo';
if ( 'postpass' === $action )
$classes[] = 'bar';
return $classes;
}
追加の変数は、決断を容易にするためであり、それらを変更するためではありません。
Filters(データをデータベースに追加したりブラウザ画面に送信したりするなど、データを操作する直前に、WordPressが実行の特定の時点でデータを通過させる関数です。)ブラウザ(WordPressがページを生成しているとき)、およびブラウザとデータベース間(WordPressがデータベースに新しい投稿やコメントを追加しているとき)、WordPressのほとんどの入出力は少なくとも1つのフィルタを通過します。あなたのプラグインは独自のフィルタリングを追加することができます。
ユーザが特定のデータ(値、関数の出力など)を変更できるようにするために、apply_filters
関数を介してフィルタフックが提供されています。
これらのフィルタフックには、フィルタの名前(またはtag)と、少なくとも{filter(つまり、何らかの方法で変更する)に使用される関数名が含まれます。 ) データ。
投稿のタイトルを変更するには、次のように定義されている the_title
filterフックを使用できます。
apply_filters( 'the_title', $title, $id );
つまり、フィルタはタグ/名前the_title
を持ち、最初のパラメータ$title
は変更されるデータ(つまり投稿タイトル)、2番目のパラメータ$id
は追加情報(この場合は投稿ID)です。
たとえば、すべての記事のタイトルを大文字で表示するには、次の行を使用します。
add_filter('the_title', 'strtoupper');
add_filter
関数を見てみると、次のように定義されているのがわかります。
add_filter( $tag, $function_to_add, $priority, $accepted_args );
1番目と2番目(必須)のパラメーターのみを指定し、3番目と4番目のパラメーターはそれぞれのデフォルト値(つまり10
と1
)に設定されています。
特定のpostのみをフィルタリングする)場合は、追加情報(このフィルタの場合はID)を使用できます。そのためには、パラメータの数を指定する必要があります。この場合)、またこれを行うには、priority引数(引数の数の前にくる)を指定する必要があります。
IDが42の投稿のタイトルのみに影響を与えたいとします。
add_filter('the_title', 'my_strtoupper', 10, 2);
function my_strtoupper($title, $id) {
if (42 === $id) return strtoupper($title);
return $title;
} // function my_strtoupper
この場合、利用可能な4つのパラメータすべてを指定する必要があります。
特定のフィルタの利用可能なパラメータ(の数)を特定するには、それが定義されている場所を調べる必要があります(この場合は here )。
参照:
apply_filters
functionadd_filter
function