[WordPress]after_setup_theme()を使って、親テーマのアクションフックを小テーマから削除する
WordPressでは、親テーマと子テーマを使い分けると非常に便利です。
自分はマルチサイトでWebサイトを作る時によく使います。
しかし、少し気をつけなくてはならないのは親テーマのfunctions.phpです。
親テーマのfunctions.phpに記述した内容は全て子テーマに反映されてしまうのです。
たとえば、親テーマで「本文を非表示にしよう」とfunctions.phpに以下のように記述します。
add_action( 'init' , 'my_remove_post_editor_support' ); function my_remove_post_editor_support() { remove_post_type_support( 'post', 'editor' ); }
これで親テーマの投稿画面の本文は非表示になります。
しかし、同時に子テーマの本文も非表示になってしまいます。
何故なら、親テーマのfunctions.phpが、子テーマのfunctions.phpより後に読み込まれるからです。
親テーマは有効化せずに、全て小テーマで作成するといった解決法があるのですが、
ここでは、親テーマのアクションフックを小テーマから削除する方法をご紹介します。
使用する関数は「after_setup_theme」です。
after_setup_theme() は親テーマが読み込まれた後にフックすることができます。
先程の親テーマの「my_remove_post_editor_support」のアクションをフックを、子テーマから削除するには、子テーマに以下のように記述します。
add_action( 'after_setup_theme', 'my_after_setup_theme' ); function my_after_setup_theme() { remove_action('init', 'my_remove_post_editor_support'); }
remove_action()の引数は、親テーマの削除したいadd_action()と同じにします。
after_setup_theme()を使って、親テーマが読み込まれた後にremove_actionでアクションフックを削除するという流れです。
「子テーマ > 親テーマ > 子テーマ」みたいな流れでややこしいですが、覚えておくといざという時に便利な方法です。
ではは。