フィルターフックに登録したコールバック関数の中で自分自身の登録を解除したいときには、ハードコードせずに済む方法がある。
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 する際にも同じ優先度を設定する必要がある。