Quantcast
Channel: WordPress › Support » Forum: Hacks - Recent Topics
Viewing all articles
Browse latest Browse all 8245

wedideas on "How can i save a Wordpress checkbox array in a widget?"

$
0
0

I'm writing a plugin/widget that will enable a user to pick some specific posts from a list of checkboxes returned from a WP get_posts query.

I've written the following code but for some reason I can't get the checkbox values to stick - the options are either all on or all off. If I select one or more of the checkboxes, they all end up checked - I presume because they aren't being written as an array but have no idea how I can update the separate values?

<?php
/*
Plugin Name: Hot Topics
Plugin URI: http://www.weddingideasmag.com
Description: Use this widget to choose an array of posts snippets to show
Version: 1.0)
Author: James Payne
Author URI: http://www.bluntcreative.co.uk
License: GPL2
*/

// register widget
add_action('widgets_init',
     create_function('', 'return register_widget("HotTopics");')
);

class HotTopics extends WP_Widget {

///////////////////////////
// Initialise the widget //
/////////////////////////// 

    function HotTopics() {
        $this->WP_Widget(
            'hottopics',
            __('Hot Topics'),
            array(
                'name' => 'Hot Topics',
                /*'classname' => 'widget-hot-topics',*/
                'description' => __( "Use this widget to choose an array of posts snippets to show in the sidebar." )
            )
        );
    }

    /**
     * Outputs the content of the widget
     *
     * @param array $args
     * @param array $instance
     */
    public function widget( $args, $instance ) {
        // outputs the content of the widget
    }

    /**
     * Ouputs the options form on admin
     *
     * @param array $instance The widget options
     */
    public function form ($instance) {

      $instance = wp_parse_args( (array) $instance, $defaults ); 

      // Populate the select list with the post titles
        $get_posts = array('1'=>'First option','2'=>'Second option','3'=>'Third option','4'=>'Fourth option','5'=>'Fifth option',);

        foreach( $get_posts as $post ) { ?>

        <p><input type="checkbox" id="<?php echo $this->get_field_id('rss'); ?>" name="<?php echo $this->get_field_name('rss'); ?>[]" <?php if ($instance['rss']) echo 'checked="checked"' ?> />
       <label for="<?php echo $this->get_field_id('rss'); ?>"><?php echo $post; ?></label></p>

        <?php }

    }

    /**
     * Processing widget options on save
     *
     * @param array $new_instance The new options
     * @param array $old_instance The previous options
     */
    public function update ($new_instance, $old_instance) {
      $instance = $old_instance;
      $instance['rss'] = $new_instance['rss'];

      return $instance;
    }
}
?>

Viewing all articles
Browse latest Browse all 8245

Trending Articles