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.

In my plugin in need to create two widget. One is :social rank" another is "Profile Rank".

This is the code which i am using here.

    <?php
    add_action( 'widgets_init', 'src_load_widgets' );

function src_load_widgets() {
    register_widget( 'Widget_SRC' );
}
function src_load_widgets() {
    register_widget( 'Widget_Rank ' );
}

class Widget_SRC extends WP_Widget {

    function Widget_SRC() {

        $widget_ops = array( 'classname' => 'src', 'description' => __('Several social networks counts and ranking system', 'src') );       
        $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'social-rank' );        
        $this->WP_Widget( 'social-rank', __('Social Rank', 'src'), $widget_ops, $control_ops );
    }


    function widget( $args, $instance ) {
        extract( $args );   
        $title = apply_filters('widget_title', $instance['title'] );    
        echo $before_widget;

        if ( $title )
            echo $before_title . $title . $after_title;

        echo do_shortcode('[SocialRank]');      

        echo $after_widget;
    }

    function update( $new_instance, $old_instance ) {
        $instance = $old_instance;

        $instance['title'] = strip_tags( $new_instance['title'] );
        return $instance;
    }

    function form( $instance ) {

        $defaults = array( 'title' => __('Social Rank', 'src'));
        $instance = wp_parse_args( (array) $instance, $defaults ); ?>
        <!-- Widget Title: Text Input -->
        <p>
            <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'hybrid'); ?></label>
            <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" />
        </p>        

    <?php
    }
}
        class Widget_Rank extends WP_Widget {

            /**
             * Widget setup.
             */
            function Widget_Rank() {
                /* Widget settings. */
                $widget_ops = array( 'classname' => 'rank', 'description' => __('Display profile rank based on vote & social counts.', 'rank') );

                /* Widget control settings. */
                $control_ops = array( 'width' => 300, 'height' => 350, 'id_base' => 'profile-rank' );

                /* Create the widget. */
                $this->WP_Widget( 'profile-rank', __('Profile Rank', 'rank'), $widget_ops, $control_ops );
            }

            /**
             * How to display the widget on the screen.
             */
            function widget( $args, $instance ) {
                extract( $args );

                /* Our variables from the widget settings. */
                $title = apply_filters('widget_title', $instance['title'] );

                /* Before widget (defined by themes). */
                echo $before_widget;

                /* Display the widget title if one was input (before and after defined by themes). */
                if ( $title )
                    echo $before_title . $title . $after_title;

                echo do_shortcode('[SocialRank]');

                /* After widget (defined by themes). */
                echo $after_widget;
            }

            /**
             * Update the widget settings.
             */
            function update( $new_instance, $old_instance ) {
                $instance = $old_instance;

                /* Strip tags for title and name to remove HTML (important for text inputs). */
                $instance['title'] = strip_tags( $new_instance['title'] );
                return $instance;
            }

            /**
             * Displays the widget settings controls on the widget panel.
             * Make use of the get_field_id() and get_field_name() function
             * when creating your form elements. This handles the confusing stuff.
             */
            function form( $instance ) {

                /* Set up some default widget settings. */
                $defaults = array( 'title' => __('Profile Rank', 'rank'));
                $instance = wp_parse_args( (array) $instance, $defaults ); ?>

                <!-- Widget Title: Text Input -->
                <p>
                    <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e('Title:', 'hybrid'); ?></label>
                    <input id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" style="width:100%;" />
                </p>        

            <?php
            }
        }
         ?>

But it is not displaying me second widget. I have found this but not able to get how to solve it http://stackoverflow.com/questions/5247302/php-namespace-5-3-and-wordpress-widget/5247436#5247436

share|improve this question
    
I don't see the second Widget class. Where is this Widget_SRC that you're trying to register? –  soulseekah Mar 31 '12 at 10:49
    
@Soulseekah Can you please check it now –  Ajay Patel Mar 31 '12 at 10:52
1  
You can't have 2 functions with the same name src_load_widgets... –  soulseekah Mar 31 '12 at 10:55
1  
Put both register_widget calls into one src_load_widgets function. And I don't see why it won't work. –  soulseekah Mar 31 '12 at 10:56
    
@Soulseekah Done! can you please post answer so i can complete this question with correct solution –  Ajay Patel Mar 31 '12 at 11:01
show 1 more comment

2 Answers

up vote 3 down vote accepted

There is absolutely no problem with registering several widgets inside one file. Widgets are separate classes, and unlike other programming languages, PHP will have no problem with your declaring two classes inside one file.

add_action( 'widgets_init', 'src_load_widgets' );

function src_load_widgets() {
    register_widget( 'Widget_SRC' );
    register_widget( 'Widget_Rank ' );
}

class Widget_SRC extends WP_Widget {
    // ...
}

class Widget_Rank extends WP_Widget {
    // ...
}
share|improve this answer
add comment

Ohh my mistake

function load_widgets() {
    register_widget( 'Widget_SRC' );
    register_widget( 'Widget_Rank' );
}
share|improve this answer
add comment

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.