我需要创建一个带有多个复选框的回调函数,将所有web/博客类别作为多个选项。
我的add\\u settings\\u字段包括:
add_settings_field(
\'select_page\',
\'Select Blog Page\', /
\'journal_combo_select_page_callback\',
\'journal_theme_blog_2_col\',
\'blog_page_blog_2_col_section\'
);
add_settings_field(
\'limit_posts\',
\'Limit Posts\',
\'journal_limit_posts_callback\',
\'journal_theme_blog_2_col\',
\'blog_page_blog_2_col_section\'
);
add_settings_field( // $id, $title, $callback, $page, $section, $args
\'check_categories\', // $id
\'Choose Categories\', // $title
\'journal_check_cats_callback\', // $callback -
\'journal_theme_blog_2_col\', // $page
\'blog_page_blog_2_col_section\' // $section
);
我是否需要在settings\\u字段“check\\u categories”中声明某种类型的数组以与回调函数通信?
function journal_check_cats_callback() {
$options = get_option(\'journal_theme_blog_2_col\');
$pag = journal_theme_blog_2_col;
$_cats = get_terms( \'category\' );
$html = \'\';
foreach ($_cats as $term) {
$checked = isset( $term->term_id ) ? $term->term_id : \'0\' ;
$html .= sprintf( \'<input type="checkbox" id="%1$s[%2$s]" name="journal_theme_blog_2_col[]" value="%2$s"%3$s />\', $pag, $term->term_id, checked( $checked, $options[\'check_categories\'], false ) );
$html .= sprintf( \'<label for="%1$s[%3$s]"> %2$s</label><br>\', $pag, $term->name, $term->term_id );
}
$html .= sprintf( \'<span class="description"> %s</label>\', \'\' );
echo $html;
}
编辑:
嗯,我正试图让这段代码正常工作,但现在还不是很安静。。。当我单击保存按钮(提交)时,值保存在wp\\U选项表中。例如:
在settings\\u部分中,我有三个settings\\u字段。一个组合框(select\\u page)、一个输入文本框(limit\\u posts)和一个带有博客类别(check\\u categories)的多复选框,下面是保存在wp options表中的数据:
a: 4:{s:11:“选择页面”;s:1:“4”;s:11:“限制帖子”;s:3:“100”;i:0;s:2:“13”;i:1;s:1:“7”}
这是对应的数组:
数组([选择页面]=>4[限制帖子]=>100[0]=>13[1]=>7)
要解决的问题:1-复选框不能保持选中状态!当然,如果我再次单击“保存”而不选中新选项,则选项表中的值将被删除。
2-我还意识到“check\\u categories”没有保存到序列化值中。。。所以我认为这是一个问题,因为我不知道如何只提供“check\\u categories”中的数组值
有人能给我一些帮助吗?
谢谢nelson