Skip to main content
added 388 characters in body
Source Link
Prisma
  • 19
  • 1
  • 9
    function get_all_terms(){
            $args = array(
            'taxonomy'           => 'gamecategory',
          'taxonomy'  'hide_empty'         => 0'gamecategory',
            'orderby'    'hide_empty'         => 'name'0,
            'order'              => 'ASC',
        'orderby'    'show_count'         => 0'name',
            'use_desc_for_title' => 0,
         'order'   'title_li'           => 0'ASC',
            'style'     'show_count'         => ''0,
            'echo'              'use_desc_for_title' => false0,
        );
        $categories = wp_list_categories($args);
        if ( $categories ) {    
 'title_li'          // printf( '<div=> class="col">%s</div>'0, $categories );
        }
    return $categories;
    
    }
    
    /**
     * Adds Latest Games widget.
     */
    class latest_games_widget extends WP_Widget {
    
        /**
         * Register widget with WordPress.
         */
        function __construct() {
            parent::__construct(
 'style'              => 'latest_games_widget''', // Base ID
                esc_html__( 'Latest Games', 'prisma' ), // Name
   'echo'             array( 'description' => esc_html__( 'Most Recent Games', 'text_domain' )false, ) // Args
            );
        }
    
        /**
         * Front-end display of widget.
         */
        public$categories function= widgetwp_list_categories( $args, $instance ) {
            echo $args['before_widget'];;
            if ( ! empty( $instance['title'] )$categories ) {
      
            echo $args['before_title'] . apply_filters// printf( 'widget_title''<div class="col">%s</div>', $instance['title']$categories ) . $args['after_title'];;
            }
            //Widget Content
            $selected_cat = $instance['cat_drop'];
            
            $args = array('post_type' => 'game', 'gamecategory' =>$selected_cat);
            $loop = new WP_Query($args);
            if($loop->have_posts(  )): 
                while($loop->have_posts()): $loop->the_post();?>
                    <div class="col-md-3 game-card-outer">                   
                        <div class="game-card">
                            <?php if (has_post_thumbnail()): ?>
                                        <a href="<?php the_permalink();?>"><?php the_post_thumbnail('small', array('class' => 'aligncenter'));  ?></a>
                            <?php endif;?>
    
                            <a class="latest_games_widget_post_title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                   
    
    
                        </div>
                    </div>
    
                    
               <?php endwhile;
            endif;
            
            //After Widget part
            echo $args['after_widget'];
        }
    
    
    
    
    
    
    
        /**
         * Back-end widget form.
         *
         * @see WP_Widget::form()
         *
         * @param array $instance Previously saved values from database.
         */
        public function form( $instance ) {
            $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'prisma' );
            $cat_title = ! empty( $instance['cat_title'] ) ? $instance['cat_title'] : esc_html__( '', 'prisma' );
            ?>
            <select name="" id="<?php echo ( $this->get_field_id( 'cat_drop' ) ); ?>">
                        <?php $terms = get_terms(['taxonomy' => 'gamecategory','hide_empty' => false,]);foreach($terms as $item){?>
                            <option value="<?php echo $item->name;?>"><?php echo $item->name; ?></option>
                            
                        <?php }?>
            </select>
    
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>"><?php esc_attr_e( 'Game category to Display:', 'prisma' ); ?></label> 
            <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'cat_title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
            </p>
    
    
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Widget Title:', 'prisma' ); ?></label> 
            <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
            </p>
           
            
             
   return $categories;
            <?php 
        }
    
    
    
    
    
    
        /**
         * Sanitize widget form values as they are saved.
         *
         * @see WP_Widget::update()
         *
         * @param array $new_instance Values just sent to be saved.
         * @param array $old_instance Previously saved values from database.
         *
         * @return array Updated safe valuesAdds toLatest beGames savedwidget.
         */
        class latest_games_widget extends WP_Widget {
        
            /**
             * Register widget with WordPress.
             */
            function __construct() {
                parent::__construct(
                    'latest_games_widget', // Base ID
                    esc_html__( 'Latest Games', 'prisma' ), // Name
                    array( 'description' => esc_html__( 'Most Recent Games', 'text_domain' ), ) // Args
                );
            }
        
            /**
             * Front-end display of widget.
             */
            public function widget( $args, $instance ) {
                echo $args['before_widget'];
                if ( ! empty( $instance['title'] ) ) {
                    echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
                }
                //Widget Content
                $selected_cat = $instance['cat_drop'];
                
                $args = array('post_type' => 'game', 'gamecategory' =>$selected_cat);
                $loop = new WP_Query($args);
                if($loop->have_posts(  )): 
                    while($loop->have_posts()): $loop->the_post();?>
                        <div class="col-md-3 game-card-outer">                   
                            <div class="game-card">
                                <?php if (has_post_thumbnail()): ?>
                                            <a href="<?php the_permalink();?>"><?php the_post_thumbnail('small', array('class' => 'aligncenter'));  ?></a>
                                <?php endif;?>
        
                                <a class="latest_games_widget_post_title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                                       
                            </div>
                        </div>                                
                   <?php endwhile;
                endif;
                
                //After Widget part
                echo $args['after_widget'];
            }                
                                        
            /**
             * Back-end widget form.
             *
             * @see WP_Widget::form()
             *
             * @param array $instance Previously saved values from database.
             */
            public function form( $instance ) {
                $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'prisma' );
                $cat_title = ! empty( $instance['cat_title'] ) ? $instance['cat_title'] : esc_html__( '', 'prisma' );
                ?>
                <select name="" id="<?php echo ( $this->get_field_id( 'cat_drop' ) ); ?>">
                            <?php $terms = get_terms(['taxonomy' => 'gamecategory','hide_empty' => false,]);foreach($terms as $item){?>
                                <option value="<?php echo $item->name;?>"><?php echo $item->name; ?></option>
                                <?php }?>
</select>        
                <p>
                <label for="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>"><?php esc_attr_e( 'Game category to Display:', 'prisma' ); ?></label> 
                <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'cat_title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
                </p>                
                <p>
                <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Widget Title:', 'prisma' ); ?></label> 
                <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
                </p>                                                        
                <?php 
            }                                                
            /**
             * Sanitize widget form values as they are saved.
             *
             * @see WP_Widget::update()
             *
             * @param array $new_instance Values just sent to be saved.
             * @param array $old_instance Previously saved values from database.
             *
             * @return array Updated safe values to be saved.
             */
            public function update( $new_instance, $old_instance ) {
                $instance = array();
                $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
                $instance['cat_title'] = ( ! empty( $new_instance['cat_title'] ) ) ? sanitize_text_field( $new_instance['cat_title'] ) : '';
    $instance[ 'cat_drop' ] = ( !empty( $new_instance[ 'cat_drop' ] ) ? strip_tags( $new_instance[ 'cat_drop' ] ) :  esc_html__('','prisma') );
           
             
                return $instance;
            }
        
        } // class Foo_Widget        
        
        // register Foo_Widget widget
        function register_foo_widget() {
            register_widget( 'latest_games_widget' );
        }
    
    } // class Foo_Widget
    
    
    // register Foo_Widget widget
    function register_foo_widget() {
        register_widget( 'latest_games_widget' );
    }
    add_action( 'widgets_init', 'register_foo_widget' );
    function get_all_terms(){
        $args = array(
            'taxonomy'           => 'gamecategory',
            'hide_empty'         => 0,
            'orderby'            => 'name',
            'order'              => 'ASC',
            'show_count'         => 0,
            'use_desc_for_title' => 0,
            'title_li'           => 0,
            'style'              => '',
            'echo'               => false,
        );
        $categories = wp_list_categories($args);
        if ( $categories ) {    
           // printf( '<div class="col">%s</div>', $categories );
        }
    return $categories;
    
    }
    
    /**
     * Adds Latest Games widget.
     */
    class latest_games_widget extends WP_Widget {
    
        /**
         * Register widget with WordPress.
         */
        function __construct() {
            parent::__construct(
                'latest_games_widget', // Base ID
                esc_html__( 'Latest Games', 'prisma' ), // Name
                array( 'description' => esc_html__( 'Most Recent Games', 'text_domain' ), ) // Args
            );
        }
    
        /**
         * Front-end display of widget.
         */
        public function widget( $args, $instance ) {
            echo $args['before_widget'];
            if ( ! empty( $instance['title'] ) ) {
                 echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
            }
            //Widget Content
            $selected_cat = $instance['cat_drop'];
            
            $args = array('post_type' => 'game', 'gamecategory' =>$selected_cat);
            $loop = new WP_Query($args);
            if($loop->have_posts(  )): 
                while($loop->have_posts()): $loop->the_post();?>
                    <div class="col-md-3 game-card-outer">                   
                        <div class="game-card">
                            <?php if (has_post_thumbnail()): ?>
                                        <a href="<?php the_permalink();?>"><?php the_post_thumbnail('small', array('class' => 'aligncenter'));  ?></a>
                            <?php endif;?>
    
                            <a class="latest_games_widget_post_title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                   
    
    
                        </div>
                    </div>
    
                    
               <?php endwhile;
            endif;
            
            //After Widget part
            echo $args['after_widget'];
        }
    
    
    
    
    
    
    
        /**
         * Back-end widget form.
         *
         * @see WP_Widget::form()
         *
         * @param array $instance Previously saved values from database.
         */
        public function form( $instance ) {
            $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'prisma' );
            $cat_title = ! empty( $instance['cat_title'] ) ? $instance['cat_title'] : esc_html__( '', 'prisma' );
            ?>
            <select name="" id="<?php echo ( $this->get_field_id( 'cat_drop' ) ); ?>">
                        <?php $terms = get_terms(['taxonomy' => 'gamecategory','hide_empty' => false,]);foreach($terms as $item){?>
                            <option value="<?php echo $item->name;?>"><?php echo $item->name; ?></option>
                            
                        <?php }?>
            </select>
    
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>"><?php esc_attr_e( 'Game category to Display:', 'prisma' ); ?></label> 
            <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'cat_title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
            </p>
    
    
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Widget Title:', 'prisma' ); ?></label> 
            <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
            </p>
           
            
             
    
            <?php 
        }
    
    
    
    
    
    
        /**
         * Sanitize widget form values as they are saved.
         *
         * @see WP_Widget::update()
         *
         * @param array $new_instance Values just sent to be saved.
         * @param array $old_instance Previously saved values from database.
         *
         * @return array Updated safe values to be saved.
         */
        public function update( $new_instance, $old_instance ) {
            $instance = array();
            $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
            $instance['cat_title'] = ( ! empty( $new_instance['cat_title'] ) ) ? sanitize_text_field( $new_instance['cat_title'] ) : '';
$instance[ 'cat_drop' ] = ( !empty( $new_instance[ 'cat_drop' ] ) ? strip_tags( $new_instance[ 'cat_drop' ] ) :  esc_html__('','prisma') );
           
     
            return $instance;
        }
    
    } // class Foo_Widget
    
    
    // register Foo_Widget widget
    function register_foo_widget() {
        register_widget( 'latest_games_widget' );
    }
    add_action( 'widgets_init', 'register_foo_widget' );
    function get_all_terms(){
            $args = array(
                'taxonomy'           => 'gamecategory',
                'hide_empty'         => 0,
                'orderby'            => 'name',
                'order'              => 'ASC',
                'show_count'         => 0,
                'use_desc_for_title' => 0,
                'title_li'           => 0,
                'style'              => '',
                'echo'               => false,
            );
            $categories = wp_list_categories($args);
            if ( $categories ) {     
               // printf( '<div class="col">%s</div>', $categories );
            }
        return $categories;
        
        }
        
        /**
         * Adds Latest Games widget.
         */
        class latest_games_widget extends WP_Widget {
        
            /**
             * Register widget with WordPress.
             */
            function __construct() {
                parent::__construct(
                    'latest_games_widget', // Base ID
                    esc_html__( 'Latest Games', 'prisma' ), // Name
                    array( 'description' => esc_html__( 'Most Recent Games', 'text_domain' ), ) // Args
                );
            }
        
            /**
             * Front-end display of widget.
             */
            public function widget( $args, $instance ) {
                echo $args['before_widget'];
                if ( ! empty( $instance['title'] ) ) {
                    echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
                }
                //Widget Content
                $selected_cat = $instance['cat_drop'];
                
                $args = array('post_type' => 'game', 'gamecategory' =>$selected_cat);
                $loop = new WP_Query($args);
                if($loop->have_posts(  )): 
                    while($loop->have_posts()): $loop->the_post();?>
                        <div class="col-md-3 game-card-outer">                   
                            <div class="game-card">
                                <?php if (has_post_thumbnail()): ?>
                                            <a href="<?php the_permalink();?>"><?php the_post_thumbnail('small', array('class' => 'aligncenter'));  ?></a>
                                <?php endif;?>
        
                                <a class="latest_games_widget_post_title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                                       
                            </div>
                        </div>                                
                   <?php endwhile;
                endif;
                
                //After Widget part
                echo $args['after_widget'];
            }                
                                        
            /**
             * Back-end widget form.
             *
             * @see WP_Widget::form()
             *
             * @param array $instance Previously saved values from database.
             */
            public function form( $instance ) {
                $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'prisma' );
                $cat_title = ! empty( $instance['cat_title'] ) ? $instance['cat_title'] : esc_html__( '', 'prisma' );
                ?>
                <select name="" id="<?php echo ( $this->get_field_id( 'cat_drop' ) ); ?>">
                            <?php $terms = get_terms(['taxonomy' => 'gamecategory','hide_empty' => false,]);foreach($terms as $item){?>
                                <option value="<?php echo $item->name;?>"><?php echo $item->name; ?></option>
                                <?php }?>
</select>        
                <p>
                <label for="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>"><?php esc_attr_e( 'Game category to Display:', 'prisma' ); ?></label> 
                <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'cat_title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
                </p>                
                <p>
                <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Widget Title:', 'prisma' ); ?></label> 
                <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
                </p>                                                        
                <?php 
            }                                                
            /**
             * Sanitize widget form values as they are saved.
             *
             * @see WP_Widget::update()
             *
             * @param array $new_instance Values just sent to be saved.
             * @param array $old_instance Previously saved values from database.
             *
             * @return array Updated safe values to be saved.
             */
            public function update( $new_instance, $old_instance ) {
                $instance = array();
                $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
                $instance['cat_title'] = ( ! empty( $new_instance['cat_title'] ) ) ? sanitize_text_field( $new_instance['cat_title'] ) : '';
    $instance[ 'cat_drop' ] = ( !empty( $new_instance[ 'cat_drop' ] ) ? strip_tags( $new_instance[ 'cat_drop' ] ) :  esc_html__('','prisma') );
                       
                return $instance;
            }
        
        } // class Foo_Widget        
        
        // register Foo_Widget widget
        function register_foo_widget() {
            register_widget( 'latest_games_widget' );
        }
        add_action( 'widgets_init', 'register_foo_widget' );
edited title
Link
Prisma
  • 19
  • 1
  • 9

Custom Widget Options (dropdown list) is not returning any How to get dropdown instance value in WordPress custom Widget

Source Link
Prisma
  • 19
  • 1
  • 9

Custom Widget Options (dropdown list) is not returning any value

I am building a custom widget for my custom taxonomy and custom post type. basically it is a widget which displays recent posts from custom post type(game). I want to give the user an option to choose a term from which he want to display the custom posts. I have placed a drop-down list with all the custom terms available for my custom post type. But the problem is when user selects a term from the list, the drop-down instance $instance( cat_drop ) does not returne any value. what i will do is i will get this value and make a custom query to return all the posts from the selected term. following is my code.

    function get_all_terms(){
        $args = array(
            'taxonomy'           => 'gamecategory',
            'hide_empty'         => 0,
            'orderby'            => 'name',
            'order'              => 'ASC',
            'show_count'         => 0,
            'use_desc_for_title' => 0,
            'title_li'           => 0,
            'style'              => '',
            'echo'               => false,
        );
        $categories = wp_list_categories($args);
        if ( $categories ) {    
           // printf( '<div class="col">%s</div>', $categories );
        }
    return $categories;
    
    }
    
    /**
     * Adds Latest Games widget.
     */
    class latest_games_widget extends WP_Widget {
    
        /**
         * Register widget with WordPress.
         */
        function __construct() {
            parent::__construct(
                'latest_games_widget', // Base ID
                esc_html__( 'Latest Games', 'prisma' ), // Name
                array( 'description' => esc_html__( 'Most Recent Games', 'text_domain' ), ) // Args
            );
        }
    
        /**
         * Front-end display of widget.
         */
        public function widget( $args, $instance ) {
            echo $args['before_widget'];
            if ( ! empty( $instance['title'] ) ) {
                echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
            }
            //Widget Content
            $selected_cat = $instance['cat_drop'];
            
            $args = array('post_type' => 'game', 'gamecategory' =>$selected_cat);
            $loop = new WP_Query($args);
            if($loop->have_posts(  )): 
                while($loop->have_posts()): $loop->the_post();?>
                    <div class="col-md-3 game-card-outer">                   
                        <div class="game-card">
                            <?php if (has_post_thumbnail()): ?>
                                        <a href="<?php the_permalink();?>"><?php the_post_thumbnail('small', array('class' => 'aligncenter'));  ?></a>
                            <?php endif;?>
    
                            <a class="latest_games_widget_post_title" href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                                   
    
    
                        </div>
                    </div>
    
                    
               <?php endwhile;
            endif;
            
            //After Widget part
            echo $args['after_widget'];
        }
    
    
    
    
    
    
    
        /**
         * Back-end widget form.
         *
         * @see WP_Widget::form()
         *
         * @param array $instance Previously saved values from database.
         */
        public function form( $instance ) {
            $title = ! empty( $instance['title'] ) ? $instance['title'] : esc_html__( '', 'prisma' );
            $cat_title = ! empty( $instance['cat_title'] ) ? $instance['cat_title'] : esc_html__( '', 'prisma' );
            ?>
            <select name="" id="<?php echo ( $this->get_field_id( 'cat_drop' ) ); ?>">
                        <?php $terms = get_terms(['taxonomy' => 'gamecategory','hide_empty' => false,]);foreach($terms as $item){?>
                            <option value="<?php echo $item->name;?>"><?php echo $item->name; ?></option>
                            
                        <?php }?>
            </select>
    
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>"><?php esc_attr_e( 'Game category to Display:', 'prisma' ); ?></label> 
            <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'cat_title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'cat_title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
            </p>
    
    
            <p>
            <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_attr_e( 'Widget Title:', 'prisma' ); ?></label> 
            <input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
            </p>
           
            
             
    
            <?php 
        }
    
    
    
    
    
    
        /**
         * Sanitize widget form values as they are saved.
         *
         * @see WP_Widget::update()
         *
         * @param array $new_instance Values just sent to be saved.
         * @param array $old_instance Previously saved values from database.
         *
         * @return array Updated safe values to be saved.
         */
        public function update( $new_instance, $old_instance ) {
            $instance = array();
            $instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
            $instance['cat_title'] = ( ! empty( $new_instance['cat_title'] ) ) ? sanitize_text_field( $new_instance['cat_title'] ) : '';
$instance[ 'cat_drop' ] = ( !empty( $new_instance[ 'cat_drop' ] ) ? strip_tags( $new_instance[ 'cat_drop' ] ) :  esc_html__('','prisma') );
           
    
            return $instance;
        }
    
    } // class Foo_Widget
    
    
    // register Foo_Widget widget
    function register_foo_widget() {
        register_widget( 'latest_games_widget' );
    }
    add_action( 'widgets_init', 'register_foo_widget' );