Child Themeのカスタマイザにオプションを追加したいのですが、実装に問題があります。私の問題は私が呼んでいる引数の名前に関連していると確信しています、しかし私にはわからないので、あなたが何か他のものを見たならば、あなたがどう思うかを躊躇しないでください。
私の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
であるとします。
私が子供のテーマの名前を使うことになっているならば、私はその方法を混同しています。ハイフンを含む子テーマの名前(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がその質問に答えたが、私はこれをどうやってやろうとしているのか誰にも間違っていたことを明確にしたい。
アクションcustomize_register
によって呼び出される関数全体の名前は任意です。ハイフンを含めない限り、任意の名前を付けることができます。この関数名しないは、親のテーマの名前または子のテーマの名前に関連付ける必要があります。これを説明するために、私の最初の質問で使用した関数名をtesseract_child_options
からchildtheme_customize_register
に変更しました。 この関数では子テーマや親テーマの名前を参照する必要はありませんが、それでも機能的ではなく、読みやすさのためにすることをお勧めします。
作成しているセクションの名前(関数add_section
の最初の引数)は任意です。必要な名前を付けることができます。これは、WPが変数の内部受け渡しに使用するタグです。 add_section
の2番目の引数に含めるテキストによって、カスタマイザのルートメニュー(最初に表示されるメニュー)に初めてアクセスしたときに表示されるテキストが決まります。 繰り返しますが、グッドプラクティスでは読みやすさのためにテーマに関連する名前を使用するように指示されています。
add_section
およびadd_control
関数の中で、私が使用した2つの引数ステートメント(たとえばtitle
、description
、およびlabel
)はすべて、2番目の引数として子テーマの正確な名前を持つ必要がありました。その子テーマの名前にハイフンがある場合(私の場合のように、tesseract-child
など)、この2番目の引数にもハイフンが必要です。
セクションの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 )); ]
さて、テーマ開発者 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_control
、add_section
、add_setting
で一致する必要があります。