サポート » テーマ » 子テーマ用のfunctuons.phの編集

  • 解決済 1812irga

    (@1812irga)


    wordpress初心者です。子テーマを作ったほうが良いという記事を拝見し、functuons.phpは親と別の関数にしなければならないということは分かったのですが、php初心者で、どう変更したらよいか全くわかりません。
    よろしかったら、ご教授をお願い致します。
    親テーマのfunctuons.phpの内容が下記になります。

    <?php

    define( ‘TEST_THEME_BASE_URL’, get_template_directory_uri());
    define( ‘TEST_OPTIONS_FRAMEWORK’, get_template_directory().’/admin/’ );
    define( ‘TEST_OPTIONS_FRAMEWORK_URI’, TEST_THEME_BASE_URL. ‘/admin/’);
    define(‘TEST_OPTIONS_PREFIXED’ ,’test_’);
    /**
    * Required: include options framework.
    */

    load_template( trailingslashit( get_template_directory() ) . ‘admin/options-framework.php’ );

    /**
    * Mobile Detect Library
    */
    if(!class_exists(“Mobile_Detect”)){
    load_template( trailingslashit( get_template_directory() ) . ‘includes/Mobile_Detect.php’ );
    }
    /**
    * Theme setup
    */

    load_template( trailingslashit( get_template_directory() ) . ‘includes/theme-setup.php’ );

    /**
    * Theme Functions
    */

    load_template( trailingslashit( get_template_directory() ) . ‘includes/theme-functions.php’ );

    /**
    * Theme breadcrumb
    */
    load_template( trailingslashit( get_template_directory() ) . ‘includes/class-breadcrumb.php’);
    /**
    * Theme widget
    */

    load_template( trailingslashit( get_template_directory() ) . ‘includes/theme-widget.php’ );

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • nobita

    (@nobita)

    こんにちは、

    functuons.phpは親と別の関数にしなければならないということは分かったのですが、php初心者で、どう変更したらよいか全くわかりません

    チャイルドテーマをサポートする親テーマを作成する場合には、いくつか考慮したほうがいい事柄があります。

    あくまで一般的な考え方ですが、チャイルドテーマでカスタマイズを可能にするための関数の書き方。

    プラグアブル関数にする。

    if ( ! function_exists( 'my_function' ) ) {
    
      function my_function(){
    
       //何か、処理
      }
    }

    このように親テーマで関数を書いておくと、
    チャイルドテーマで、function my_function()を記述できるようになります。
    親テーマの関数ではなく、子テーマの関数が適用されるようになります。

    チャイルドテーマの、functions.phpが読み込まれてから、親のfunctions.phpが読み込まれるという点を念頭に置いてコーディングする必要があります。

    現在の親テーマのコード、

    load_template()が使われていますが、functions.phpから何かしらのフレームワークなどを読み込むときには、テンプレートインクルード用の関数を必ずしも使う必要はありません。
    (functions.phpでインクルードする場合のみ、)

    load_template()を使用した場合は、インクルード先のファイルの変数($hoge)は、読み込まれませんので、動作に影響が出るかもしれません。(PHPの、include やrequireは、変数を読み込みます)

    他にも、フィルタフックを付けておいた方が、チャイルドテーマからのカスタマイズが便利になったり、アクションフックを付けておいた方が便利とか、いろいろありますが、、、

    まずは、functions.phpには何も書かずに、style.cssの設定だけをして、チャイルドテーマを動かしながら、いろいろ考えてみるといいと思います。

    1812irga

    (@1812irga)

    早速の返事有難うございます。

    子テーマのfunctions.phpに何も書かずに、style.cssのみ設定した場合、上手くいきませんでした。

    load_template()を使用した場合は、インクルード先のファイルの変数($hoge)は、読み込まれませんので、動作に影響が出るかもしれません。(PHPの、include やrequireは、変数を読み込みます)

    おっしゃる通りこの部分かなと思います。
    現状、自分の知識では解決できそうにないので、非効率ではありますが、別テーマか親を直接編集していくか、phpの勉強も兼ねてもう少し足掻いてみたいと思います。

    有難うございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「子テーマ用のfunctuons.phの編集」には新たに返信することはできません。