我在我的第一个设置API应用程序中遇到了一个障碍。
在子菜单页中,我需要为从另一个设置检索到的每个值生成许多字段(比如颜色选择器)。
更准确地说,我在另一个菜单页中创建了一个类别复选框列表:
function bcio_fp_special_cats_display(){
$options = (array)get_option(\'bcio_options\');
$categories = bcio_get_categories();
echo \'<ul>\';
foreach($categories as $category){
$selected = ( isset( $options[\'fp_sp_category_\'.$category->cat_ID] ) ) ? $options[\'fp_sp_category_\'.$category->cat_ID] : \'\';
if($selected){
echo \'<li><input type="checkbox" value="\'.$category->cat_ID.\'" name="bcio_options[fp_sp_category_\'.$category->cat_ID.\']" checked/>\'.$category->name.\'</li>\';
} else {
echo \'<li><input type="checkbox" value="\'.$category->cat_ID.\'" name="bcio_options[fp_sp_category_\'.$category->cat_ID.\']"/>\'.$category->name.\'</li>\';
}
}
echo \'</ul>\';}
在第二个选项页面中,我使用选项值在另一个设置部分中生成适当的字段:function bcio_special_section_settings_display(){
echo "These settings fields are generated based on your selection of Special Front Page Categories";
$options = (array)get_option(\'bcio_options\');
$categories = bcio_get_categories();
foreach($categories as $category){
$selected = ( isset( $options[\'fp_sp_category_\'.$category->cat_ID] ) ) ? $options[\'fp_sp_category_\'.$category->cat_ID] : \'\';
$cat_id = $category->cat_ID;
if($selected){
add_settings_field(
\'bcio_special_cat_\'.$category->cat_ID,
\'Special Section:<br />\'.$category->name,
\'bcio_special_section_display("\'.$cat_id.\'")\',
\'business-cover-special-sections\',
\'bcio_special_sections_options\'
);
}
}}
//The field itself
function bcio_special_section_display($cat_id){
$special_options = (array)get_option(\'bcio_special_options\');
$color = ( isset( $special_options[\'color\'] ) ) ? $special_options[\'color\'] : \'\';
echo \'<input type="text" name="bcio_options[color]" value="\' . $color . \'" class="bc-color-field" >\';
}
这成功地生成了适当数量的字段,并在字段标签中应用了类别的名称,但当我尝试使用回调时,它会出错,因为我在字段回调中传递的参数$cat\\u id并不像我想象的那样有效。警告:call\\u user\\u func()要求参数1为有效回调,在/nas/wp/www/cluster-2598/businesscover/wp admin/includes/template中未找到函数“bcio\\u special\\u section\\u display(“12285”)”或函数名无效。php在线1237
我尝试了几种方法,但没有成功,我真的需要找到一种方法来存储与类别ID相关的选项,而不必对ID本身进行硬编码。
让设置API或一些非插件解决方案以正确的方式工作是至关重要的。我有一个由Elliot Condon基于ACF的版本,但我不想让主题依赖于第三方插件。这些字段中的设置将为站点的特殊部分定义较少的变量、徽标等。如果有任何正确方向的暗示,我们将不胜感激。