设置API:如何创建带有博客类别的多个复选框?

时间:2012-07-23 作者:naires

我需要创建一个带有多个复选框的回调函数,将所有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

1 个回复
SO网友:Vince

我也有同样的问题,以下是对我有效的方法:

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 = in_array($term->term_id, $options) ? \'checked="checked"\' : \'\';
        $html .= sprintf( \'<input type="checkbox" id="%1$s[%2$s]" name="%1$s[]" value="%2$s" %3$s />\', $pag, $term->term_id, $checked );
        $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;

}

结束

相关推荐