サポート » テーマ » wordpress 親テーマで設定されたカスタマイザーの項目を子テーマ側から削除したい

  • 解決済 pecoro0321

    (@pecoro0321)



    前提・実現したいこと
    wordpressでカスタマイズOKな無料テーマをローカルでDLし、
    子テーマを作成してカスタマイズをしています。

    親テーマのfunction.phpでcustomizer.phpを読み込んでおり、
    その中にカスタマイザーの設定(下記)が入っていますが、子テーマ側から項目を削除したいと考えています。

    該当のソースコード

    add_action( 'customize_register', 'themename_customize_register' );
    function themename_customize_register( $wp_customize ) {
     $wp_customize->add_section(
      'section_want_to_remove',array(
        //内容
        )
     );
     $wp_customize->add_setting(
       //内容
     );
     $wp_customize->add_control(
       //内容
     );
    }

    試したこと
    やってみたことは以下になります。

    add_action( "customize_register", "customizer_remove_sections" );
    function customizer_remove_sections( $wp_customize ) {
    	$wp_customize->remove_section('section_want_to_remove');
    }

    1.上記コードを子テーマのfunction.phpに記述→失敗(項目が削除されませんでした)

    2.上記コードを親テーマのfunction.phpに記述→成功(項目が削除されました)

    3.子テーマに親テーマからcustomizerの記述一式をコピーし、重複エラーの出た関数名などを変更してから項目を削除
     →子テーマ側で削除しても、親テーマに項目があると削除されませんでした

    現状親テーマのfunction.phpに記述すれば項目を削除できたのですが、
    親テーマの更新があったときのために子テーマの編集のみにできればと思い、質問しました。

    子テーマの編集のみでできる方法があれば教えていただけるとありがたいです。
    よろしくお願いします。

    補足情報

    WordPress 4.9.8
    ローカル開発環境
    web server nginx
    PHP version 7.2.9
    MySQL version 5.7.23

    • このトピックは pecoro0321が1 週、 2 日前に変更しました。
2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    子テーマの functions.php は、親テーマの functions.php より先に実行されます。
    add_action() で実行される優先順序を親より後に実行するようにすればいいかと思います。

    add_action( 'customize_register', 'customizer_remove_sections', 11, 1 );

    @ishitaka
    ご回答ありがとうございます!

    教えていただいたように$priority, $accepted_argsを11と1に設定し、
    子テーマのfunction.phpに記述したところ正常に動作しました。

    ・デフォルトでは子テーマの functions.php は、親テーマの functions.php より先に実行される
    ・add_action() で実行される優先順序を設定できる
    →$priorityの初期値は10なので、11にすればそれより後で実行される

    ということなのですね。大変勉強になりました!
    ありがとうございました!

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。