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'm using a plugin called Recent category post widget. Unfortunately the plugin developer is no longer offering support. The way this plugin is coded, displays only one instance of the widget (meaning that I can use this widget only once). What must be changed in the code below so as to use multiple instances of the widget?

<?php
register_activation_hook    (   __FILE__,           array('single_category_posts_widget', 'activate')       );
register_deactivation_hook  (   __FILE__,           array('single_category_posts_widget', 'deactivate')     );
add_action                  (   "widgets_init",     array('single_category_posts_widget', 'register')       );

class single_category_posts_widget {

    function activate()
    {
        if( get_option( 'single_category_posts_widget_title' ) === FALSE ) {
            update_option( 'single_category_posts_widget_title', 'Recent Category Posts' );
        }
        if( get_option( 'single_category_posts_widget_category' ) === FALSE ) {
            update_option( 'single_category_posts_widget_category', 0 );
        }
        if( get_option( 'single_category_posts_widget_qty' ) === FALSE ) {
            update_option( 'single_category_posts_widget_qty', 5 );
        }
    }

    function deactivate()
    {
        delete_option( 'single_category_posts_widget_title' );
        delete_option( 'single_category_posts_widget_category' );
        delete_option( 'single_category_posts_widget_qty' );
    }

    function register()
    {
        wp_register_sidebar_widget( 'recent-category-posts', 'Recent Posts in Category', array('single_category_posts_widget', 'widget' ));
        wp_register_widget_control( 'recent-category-posts', 'Recent Posts in Category', array('single_category_posts_widget', 'control' ));
    }

    function control()
    {
        if (isset($_POST['single_category_posts_widget_title']))        update_option(  'single_category_posts_widget_title',       mysql_real_escape_string($_POST['single_category_posts_widget_title'])      );
        if (isset($_POST['single_category_posts_widget_category']))     update_option(  'single_category_posts_widget_category',    intval($_POST['single_category_posts_widget_category']) );
        if (isset($_POST['single_category_posts_widget_qty']))          update_option(  'single_category_posts_widget_qty',         intval($_POST['single_category_posts_widget_qty'])      );
        ?>
        <p><label>
            <strong>Widget Title:</strong><br />
            <input class="widefat" type="text" name="single_category_posts_widget_title" value="<?php echo get_option( 'single_category_posts_widget_title' ); ?>" /></label></p>
        <p><label>
            <strong>What Category:</strong><br />
            <?php wp_dropdown_categories( Array(
                        'orderby'            => 'ID', 
                        'order'              => 'ASC',
                        'show_count'         => 1,
                        'hide_empty'         => 0,
                        'hide_if_empty'      => false,
                        'echo'               => 1,
                        'selected'           => get_option( 'single_category_posts_widget_category' ),
                        'hierarchical'       => 1, 
                        'name'               => 'single_category_posts_widget_category',
                        'id'                 => 'single_category_posts_widget_category',
                        'class'              => 'widefat',
                        'taxonomy'           => 'category',
                    ) ); ?></label></p>
        <p><label>
            <strong>How Many Posts:</strong><br />
            <input class="widefat" type="text" name="single_category_posts_widget_qty" value="<?php echo get_option( 'single_category_posts_widget_qty' ); ?>" /></label></p>
        <?php
    }

    function widget( $args )
    {
        echo $args['before_widget'];
        echo $args['before_title'] . get_option( 'single_category_posts_widget_title', 'Recent Category Posts' ) . $args['after_title'];
        echo self::get_cat_posts( get_option( 'single_category_posts_widget_category', 0 ), get_option( 'single_category_posts_widget_qty', 5 ) );
        echo $args['after_widget'];
    }

    function get_cat_posts( $cat, $qty )
    {
        $posts = get_posts( Array(
            'cat'           =>  $cat,
            'orderby'       =>  'date',
            'order'         =>  'DESC',
            'numberposts'   =>  $qty
        ));
        $returnThis = '';
        if( count( $posts ) )
            $returnThis .= '<ul>'."\r\n";
        foreach( $posts as $post )
            $returnThis .= "\t".'<li><a href="'.get_permalink( $post->ID ).'">'.$post->post_title.'</a></li>'."\r\n";
        if( count( $posts ) )
            $returnThis .= '</ul>'."\r\n";
        return $returnThis;
    }

}
share|improve this question

1 Answer 1

up vote 1 down vote accepted

You need to recode your plugin to make use of the Wordpress Widget API

share|improve this answer
    
Thanks for the letting me know. Not a php expert, managed to find a similar widget that works as expected. –  Sledge81 Oct 20 '11 at 8:52

Your Answer

 
discard

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.