web-dev-qa-db-ja.com

子テーマにカスタマイザ設定を追加する方法

Child Themeのカスタマイザにオプ​​ションを追加したいのですが、実装に問題があります。私の問題は私が呼んでいる引数の名前に関連していると確信しています、しかし私にはわからないので、あなたが何か他のものを見たならば、あなたがどう思うかを躊躇しないでください。

私が疑っていることは間違っています:

  1. 私のfunctions.phpのどの引数が子テーマの名前(例:child_theme_name/tesseract-child)、そして親テーマのタイトル(例:parent_theme_name/tesseract)を持つべきかわからない。通常、私は常に子テーマの名前を使用するべきだと思いますが、親テーマのcustomizer.phpファイルにあるパネルの宣言には、親テーマの名前(tesseract_footer_options)が含まれています。たとえば、子テーマのadd_sectionの最初の引数がparent_theme_name_footer_optionsまたはchild_theme_name_footer_optionsであるとします。

  2. 私が子供のテーマの名前を使うことになっているならば、私はその方法を混同しています。ハイフンを含む子テーマの名前(tesseract-child_options)を参照して関数に名前を付けようとすると、エラーが発生します。だから、私はphpがハイフンで命名された関数を持つのが好きだとは思わない、そして実際に私はこのphpが関数名の中でハイフンを許さないことを読んだ。ハイフンが悪いというもう一つの手がかり:子テーマ名からのハイフンがクラッシュを引き起こしただけでなく、それは私のエディタ(崇高なテキスト)がコードを奇妙にマークアップさせました。ハイフンが問題であるかどうかをテストするために、すべてのアンダースコアを使用して関数の名前をtesseract_child_optionsに変更しましたが、技術的にはテーマの名前がアンダースコアのtesseract-childではなくハイフンのtesseract_childであるためです。

コード

これは、親テーマのcustomizer.phpファイル内のパネルの宣言です。

$wp_customize->add_panel( 'tesseract_footer_options', array(

'priority'       => 5,

'capability'     => 'edit_theme_options',

'title'          => 'Footer Options',

//'description'  => ''

) );

これは、そのオプションパネルにセクションを追加しようとするために、私の子テーマのfunction.phpファイルで使用しているコードです。

add_action( 'customize_register' , 'tesseract_child_options' );

function tesseract_child_options( $wp_customize ) {

$wp_customize->add_section( 
    'tesseract_footer_options', 
    array(
        'title'       => __( 'Reblog Options', 'tesseract' ),
        'priority'    => 100,
        'capability'  => 'edit_theme_options',
        'description' => __('Change Reblog Options Here.', 'tesseract'), 
    ) 
);


$wp_customize->add_setting( 'number_of_reblogs',
    array(
        'default' => '3'
    )
);  

$wp_customize->add_control( new WP_Customize_Control( 
    $wp_customize, 
    'reblog_number_control',
    array(
        'label'    => __( 'Number of Reblogs', 'tesseract-child' ), 
        'section'  => 'tesseract_footer_options',
        'settings' => 'reblog_number',
        'type'     => 'text',
        'priority' => 10,
    ) 
));

}

任意の助けは大歓迎です!ありがとうございます。

プロスティの答えに関する最新情報:

@Prostiがその質問に答えたが、私はこれをどうやってやろうとしているのか誰にも間違っていたことを明確にしたい。

  1. アクションcustomize_registerによって呼び出される関数全体の名前は任意です。ハイフンを含めない限り、任意の名前を付けることができます。この関数名しないは、親のテーマの名前または子のテーマの名前に関連付ける必要があります。これを説明するために、私の最初の質問で使用した関数名をtesseract_child_optionsからchildtheme_customize_registerに変更しました。 この関数では子テーマや親テーマの名前を参照する必要はありませんが、それでも機能的ではなく、読みやすさのためにすることをお勧めします。

  2. 作成しているセクションの名前(関数add_sectionの最初の引数)は任意です。必要な名前を付けることができます。これは、WPが変数の内部受け渡しに使用するタグです。 add_sectionの2番目の引数に含めるテキストによって、カスタマイザのルートメニュー(最初に表示されるメニュー)に初めてアクセスしたときに表示されるテキストが決まります。 繰り返しますが、グッドプラクティスでは読みやすさのためにテーマに関連する名前を使用するように指示されています。

  3. add_sectionおよびadd_control関数の中で、私が使用した2つの引数ステートメント(たとえばtitledescription、およびlabel)はすべて、2番目の引数として子テーマの正確な名前を持つ必要がありました。その子テーマの名前にハイフンがある場合(私の場合のように、tesseract-childなど)、この2番目の引数にもハイフンが必要です。

  4. セクションのpriorityは、私が作成したセクションがオプションリストのどこに入るか(つまり、どのくらい高いか低いか)を決定しました。フッターは、親の4番目のセクションで、優先順位は5です。 add_sectionの中で優先順位を設定した場合、4の優先順位を持つために、オプションはフッターオプションボタンの上に来ました、私がそれを6に設定した場合、それはそれを下回りました。

作業コードの例

 
 add_action( 'customize_register'、 'childtheme_customize_register'); // 2番目の引数は任意ですが、phpでは関数名にハイフンを使用できないため、ハイフンを使用できません。 ____。] 
 $ wp_customize-> add_section(
 'tesseract_reblog_options'、
 array(
 'title' => __( 'Reblog Options'、 'tesseract- child ')、// 2番目の引数が子テーマ名と一致する
' priority '=> 6、//リストのフッターオプションの下のセクションを置く
' capability '=>' edit_theme_options '、 
 'description' => __( 'ここでリブログのオプションを変更します。'、 'tesseract-child')、// 2番目の引数は子のテーマ名と一致します
); 
。 
 
 
 $ wp_customize-> add_setting( 'number_of_reblogs'、
配列(
 'デフォルト' => '3' 
)
); 
 
 $ wp_customize-> add_control( 'setting_id'、array(
 'label' => __( 'Number of Reblogs'、 'tesseract-child')、// 2nd argは、子テーマの名前
と一致します。[section] => [tesseract_reblog_options]、
 [設定] => [number_of_reblogs]、
 [type] => [text]、
 [優先順位] => 6 
)); 
] 
 
3

さて、テーマ開発者 handbook をチェックしてください。

$wp_customize->add_control( 'reblog_number_control', array(
  'label'    => __( 'Number of Reblogs', 'tesseract-child' ), 
    'section'  => 'tesseract_footer_options',
    'settings' => 'number_of_reblogs',
    'type'     => 'text',
    'priority' => 10
) );

あなたは子供のテーマにいるので

'title'       => __( 'Reblog Options', 'tesseract' ),

すごい

'title'       => __( 'Reblog Options', 'tesseract-child' ),

言い換えれば、あなたの設定、コントロールおよびセクション名はadd_controladd_sectionadd_settingで一致する必要があります。

4
prosti