【发布时间】:2014-06-25 11:31:42
【问题描述】:
我在我的第一个设置 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_id 不太有效就像我想的那样。
警告:call_user_func() 期望参数 1 为有效回调,未找到函数 'bcio_special_section_display("12285")' 或 /nas/wp/www/cluster-2598/businesscover/wp-admin/ 中的函数名称无效在第 1237 行包含/template.php
我尝试了几种方法,但没有运气,我真的需要找到一种方法来存储与类别 ID 关联的选项,而不是对 ID 本身进行硬编码。
使用设置 API 或一些非插件解决方案以正确的方式工作是至关重要的。我有一个基于 Elliot Condon 的 ACF 版本,但不想让主题依赖于 3rd 方插件。这些字段中的设置将为站点的特殊部分定义 LESS 变量、徽标等。任何正确方向的提示将不胜感激。
【问题讨论】:
标签: wordpress wordpress-theming