カテゴリー
ブログ

フックを外す簡単な方法

フィルターフックに登録したコールバック関数の中で自分自身の登録を解除したいときには、ハードコードせずに済む方法がある。

function lf_my_filter( $title, $id ) {

    /* do some stuff */

    // equal to remove_filter( 'the_content', 'lf_my_filter' );
    remove_filter( current_filter(), __FUNCTION__ );

    return $title;
}
add_filter( 'the_content', 'lf_my_filter' );

アクションフックも同様。

function lf_my_action( $args ) {

    /* do some stuff */

    // equal to remove_action( 'wp', 'lf_my_action' );
    remove_action( current_action(), __FUNCTION__ );
}
add_action( 'wp', 'lf_my_action' );

ただし、第3引数 ($priority) にデフォルト (1) 以外の優先度を設定している時は、remove する際にも同じ優先度を設定する必要がある。

コメントを残す