如何使以下小工具的标题可编辑?

时间:2014-11-27 作者:janoChen

我有以下小部件,用于显示游戏的基本信息:

class Game_Info_Widget extends WP_Widget {

    /**
     * Register widget with WordPress.
     */
    public function __construct() {
        parent::__construct(
                \'game_info_widget\', // Base ID
                \'Game - Info\', // Name
                array(\'description\' => __(\'Game - Info\', \'text_domain\'),) // Args
        );
    }

    /**
     * Front-end display of widget.
     *
     * @see WP_Widget::widget()
     *
     * @param array $args     Widget arguments.
     * @param array $instance Saved values from database.
     */
    public function widget($args, $instance) {

        if (!is_singular(\'games\')) {
            return;
        }

        extract($args);
        $title = \'Game Info\'; //apply_filters( \'widget_title\', $instance[\'title\'] );

        echo $before_widget;
        //if ( ! empty( $title ) )
        echo $before_title . $title . $after_title;
        //echo __( \'Hello, World!\', \'text_domain\' );


        $templates = array();

        $templates[] = "game-info.php";


        // Backward compat code will be removed in a future release
        locate_template($templates, true);

        echo $after_widget;
    }

    /**
     * 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\'] = strip_tags($new_instance[\'title\']);

        return $instance;
    }

    /**
     * Back-end widget form.
     *
     * @see WP_Widget::form()
     *
     * @param array $instance Previously saved values from database.
     */
    public function form($instance) {
        /*
          if ( isset( $instance[ \'title\' ] ) ) {
          $title = $instance[ \'title\' ];
          }
          else {
          $title = __( \'New title\', \'text_domain\' );
          }
         */
        ?>
        This widget only show on Game single page
        <?php
        /*
          ?>
          <p>
          <label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e( \'Title:\' ); ?></label>
          <input class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
          </p>
          <?php
         */
    }

}
问题是小部件的标题不可编辑。我该怎么做?

1 个回复
SO网友:Yatendra

Use This

 <?php


    class Game_Info_Widget extends WP_Widget {

        /**
         * Register widget with WordPress.
         */
        public function __construct() {
            parent::__construct(
                    \'game_info_widget\', // Base ID
                    \'Game - Info\', // Name
                    array(\'description\' => __(\'Game - Info\', \'text_domain\'),) // Args
            );
        }

        /**
         * Front-end display of widget.
         *
         * @see WP_Widget::widget()
         *
         * @param array $args     Widget arguments.
         * @param array $instance Saved values from database.
         */
        public function widget($args, $instance) {

            if (!is_singular(\'games\')) {
                return;
            }

            extract($args);
            $title = $instance[\'title\']; 
        //apply_filters( \'widget_title\', $instance[\'title\'] );

            echo $before_widget;
            if ( ! empty( $title ) )
            echo $before_title . $title . $after_title;
            //echo __( \'Hello, World!\', \'text_domain\' );


            $templates = array();

            $templates[] = "game-info.php";


            // Backward compat code will be removed in a future release
            locate_template($templates, true);

            echo $after_widget;
        }

        /**
         * 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\'] = strip_tags($new_instance[\'title\']);

            return $instance;
        }

        /**
         * Back-end widget form.
         *
         * @see WP_Widget::form()
         *
         * @param array $instance Previously saved values from database.
         */
        public function form($instance) {

              if ( isset( $instance[ \'title\' ] ) ) {
              $title = $instance[ \'title\' ];
              }
              else {
              $title = __( \'New title\', \'text_domain\' );
              }


              ?>
              <p>
              <label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e( \'Title:\' ); ?></label>
              <input class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" type="text" value="<?php echo $instance[\'title\']; ?>" />
              </p>
              <?php

        }

    }
?>
结束

相关推荐

Multiple widgets in wordpress

我已经创建了一个wordpress小部件。它在小部件选项中有一个下拉列表。下拉列表包含“facebook”和“twitter”。如果管理员选择“twitter”,那么twitter关注者计数将显示在小部件中,与facebook的情况类似。使用jquery,该计数显示在id为“social count”的div中。当页面加载时,jquery ajax将获取计数并将其插入到“社交计数”中。问题是它在单个实例中运行良好。但是,如果在侧栏中添加了2个实例,则在这两个实例中都会显示最新的计数,因为我使用的是$(“.