Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I am trying to add a custom setting at General Settings page with checkboxes.

My plan to this is for users to select appropriate categories for their blog based on a list of categories through checkboxes.

I use the code below.

$new_general_setting = new new_general_setting();

class new_general_setting {
    function new_general_setting( ) {
        add_filter( 'admin_init' , array( &$this , 'register_fields' ) );
    }
    function register_fields() {
        register_setting( 'general', 'mystore_categories', 'esc_attr' );
        add_settings_field('mystore_categories', '<label for="main_admin">'.__('Store Category' , 'favorite_color' ).'</label>' , array(&$this, 'mystore_categories_func') , 'general' );
    }
    function mystore_categories_func() {
    $options = get_option('mystore_categories');
    $portfolio_cats = ( is_array( $options['mystore_categories'] ) ) ? array_map( 'absint', $options['mystore_categories'] ) : array();
    $blog_id = 1;
    switch_to_blog($blog_id);
    $hiterms = get_terms( 'product_category', array( 'hide_empty' => 0, 'parent' => 0) );

    foreach ($hiterms as $hiterm) {
      // $checked = $options[mystore_categories][$loterm->term_id] ? ' checked="checked"' : '';
      echo '<input type="checkbox" name="mystore_categories[]" value="' . $hiterm->term_id . '" ' . checked( in_array( absint( $hiterm->term_id ),$portfolio_cats ),true ) . '> ' . $hiterm->name . '<br/>';
      $loterms = get_terms('product_category', array('orderby' => 'slug', 'parent' => $hiterm->term_id, 'hide_empty' => 0));
      if($loterms) {
        foreach($loterms as $loterm) {
          echo '<input type="checkbox" name="mystore_categories[]" value="' . $loterm->term_id . '" style="margin-left:25px;" ' . checked( in_array( absint( $loterm->term_id ),$portfolio_cats ),true ) . '> ' . $loterm->name . '<br/>';
        }
      }
    }

    restore_current_blog();
    echo '<br/><span class="description">Select the category or categories that suits what you sell.</span>';
    }
}

However, when submitting the page, the checked ones are not getting checked. Also, when I echo the $options[mystore_categories] its empty.

Please help

share|improve this question
1  
Have you seen Settings API with arrays example? –  toscho Feb 3 at 8:57
    
I don't understand how to do it @toscho –  Ken Feb 3 at 9:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.