我想为我的孩子主题的定制器添加一个选项,但我在实现它时遇到了一些困难。我很确定我的问题与我所说的论点的名称有关,但我不确定,所以如果你看到其他东西,请毫不犹豫地告诉我你的想法。
我怀疑的是错的:我不确定我的functions.php
应具有子主题的名称(例如。child_theme_name
/ tesseract-child
), 以及父主题的标题(例如。parent_theme_name
/tesseract
) . 通常我会假设我应该始终使用子主题的名称,但面板的声明是父主题的customizer.php
文件包括父主题的名称(tesseract_footer_options
), 我不确定WordPress在使用子主题时是否修改了这个名称。例如,第一个参数add_section
在儿童主题的be中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答案的最新信息:
@PROSTI回答了这个问题,但我只想澄清一下,对于任何试图找出如何做到这一点的人来说,有什么错:
操作调用的整个函数的名称customize_register
是任意的,只要不包含连字符,就可以随意命名。请注意,此函数名does not 必须以任何方式与父主题的名称或子主题的名称相关。为了说明这一点,在我的工作示例(如下所示)中,我将我在初始问题中使用的函数名从tesseract_child_options
到childtheme_customize_register
. 请注意,虽然您不必在此函数中引用子主题或父主题的名称,但这是一种很好的做法,但只是为了易读性,而不是功能性
要创建的节的名称(函数中的第一个参数add_section
) 是任意的,你可以随意命名。这是WP将用于内部传递变量的标记。在的第二个参数中包含的文本add_section
将确定第一次在自定义程序的根菜单(显示的第一个菜单)上着陆时显示的文本<同样,良好实践要求,为了便于阅读,使用与主题相关的名称
内部add_section
, 和add_control
函数,我使用的所有两个参数语句(例如。title
, description
, 和label
) 需要将子主题的确切名称作为第二个参数。如果该子主题的名称有连字符(就像我的一样,例如。tesseract-child
), 第二个参数也应该有连字符。
在priority
确定我创建的节在选项列表中的位置(即高或低)。页脚是父对象中的第四部分,它的优先级为5
. 如果我在中设置优先级add_section
, 优先考虑4
该选项位于页脚选项按钮上方,如果我将其设置为6
, 它落在它下面。
工作代码示例
add_action( \'customize_register\', \'childtheme_customize_register\'); //second argument is arbitrary, but cannot have hyphens because php does not allow them in function names.
function childtheme_customize_register( $wp_customize ) {
$wp_customize->add_section(
\'tesseract_reblog_options\',
array(
\'title\' => __( \'Reblog Options\', \'tesseract-child\' ), //2nd arg matches child theme name
\'priority\' => 6, // put the section below the Footer options on the list
\'capability\' => \'edit_theme_options\',
\'description\' => __(\'Change Reblog Options Here.\', \'tesseract-child\'), //2nd arg matches child theme name
)
);
$wp_customize->add_setting( \'number_of_reblogs\',
array(
\'default\' => \'3\'
)
);
$wp_customize->add_control( \'setting_id\', array(
\'label\' => __( \'Number of Reblogs\', \'tesseract-child\' ), //2nd arg matches child theme name
\'section\' => \'tesseract_reblog_options\',
\'settings\' => \'number_of_reblogs\',
\'type\' => \'text\',
\'priority\' => 6
) );
}