・イベント登録 = フィルター登録(apply_filters)
・イベント処理登録 = フィルター処理登録(add_filter)
私は感覚的には上記のように理解して利用しています。最初はよくわからなかったのですが、使っているうちに上記のような感じの感覚が形成されて、体で覚えた感じになりました。
Wordpreeシステムで最初から登録されている「フィルター」以外に、ユーザー側で登録したいものがあれば「apply_filters」をつかうということのようです。
用意されている「フィルター」やユーザー側で追加した「フィルター」に、独自の処理を書きたい場合は「add_filter」をつかうということです。
・関数リファレンス/apply filters - WordPress Codex 日本語版
・関数リファレンス/add filter - WordPress Codex 日本語版
フィルター登録(apply_filters)
function wp_authenticate_username_password($user, $username, $password) {
//
// いろいろな処理
//
$user = apply_filters( 'wp_authenticate_user', $user, $password );
if ( is_wp_error($user) )
return $user;
//
// パスワードチェック
//
return $user;
}
Wordpressのソース「wp-includes/user.php」を見てみます。「wp_authenticate_user」というフィルターを登録している部分です。
「apply_filters」関数は、「wp_authenticate_user」という処理が何もなければ、第2引数の「 $user」を戻り値に返すようになっています。こういう仕組みを利用して、拡張性を確保するわけです。
「wp_authenticate_user」というフィルター処理を書くと、この部分に処理を書いているのと同じことになります。
フィルター処理登録(add_filter)
add_filter( 'wp_authenticate_user', 'login_guard_authenticate_username_password', 9, 3);
function login_guard_authenticate_username_password($user, $username, $password) {
//入力が空でなければエラーにする
if (!empty($_POST['dummy_code'])) {
$error = new WP_Error();
$print_error = __('ERROR', 'login_guard');
$empty_captcha = __('ERROR', 'login_guard');
$error->add('login_guard', "<strong>$print_error</strong>: $empty_captcha");
return $error;
}
return $user;
}
ソースを読み切れてないので、自己責任で!!・ログイン画面に、ダミーの入力項目を作成する・ダミーの入力項目に、何か入力されているとエラーにするこんな感じの動作をするプ
こんな感じで、wp_authenticate_userというフィルターを利用して、独自の処理を組み込みます。
スポンサーリンク