使用选择标记时不保存Wordpress小部件配置表单

时间:2015-11-20 22:56:01

标签: php wordpress widget wordpress-theming

我的小部件无法保存配置表单中输入的值。它只是一个标签,但是当我按下保存按钮时它似乎没有保存数据。

class Ticket_Widget extends WP_Widget {
             public function __construct() {
                   // widget actual processes
                parent::__construct(false, $name = __('Tickets Widget'));
            }

        public function form( $instance ) {
               // outputs the options form on admin
                //$event_id = 'This is a test';
                $defaults = array(
                    'event_id' => '-1'
                    );
                $event_id = $instance[ 'event_id' ]; ?>
                <p>
                    <label for="<?php echo $this->get_field_id( 'event_id' );?>">Event ID - <?php echo $instance[ 'event_id']; ?></label>
                    <?php
                    $args = array(
                        'post_type' => 'tc_events',
                    );
                    $loop = new WP_Query($args);
                    ?>
                    <select class="widefat">
                        <option value="1">Select an event</option>
                    <?php
                        while($loop->have_posts()): $loop->the_post(); ?>
                        <option <?php if ( $instance['event_id'] == the_ID()) echo 'selected' ?> value="<?php the_ID(); ?>" name="<?php echo $this->get_field_name( 'event_id' ); ?>" id="id="<?php echo $this->get_field_id( 'icon_feature_link_text' );?>"><?php the_title(); ?></option>
                    <?php
                        endwhile;
                        wp_reset_query();
                    ?>
                    </select>
                </p>
                    <?php

        }

        public function update( $new_instance, $old_instance ) {
               // processes widget options to be 
            $instance = $old_instance;
            $instance[ 'event_id'] = strip_tags( $new_instance[ 'event_id']);
            return $instance;
        }

        public function widget( $args, $instance ) {
               // outputs the content of the widget
            extract( $instance );
                        // set the arguments for children of the ancestor page 
            $args = array( 
                'event_id' => $instance[ 'event_id' ], 
                'title_li' => '', 
                );

            echo do_shortcode('[event id="' . $event_id . '"]');
            echo "Event ID = " . $event_id;
        }

}

add_action('widgets_init', function() {
    register_widget( 'Ticket_Widget' );
});

我能够得到一个简单的&lt;输入&gt;用于在配置表单上输入时保存数据的标签,但是在使用此行时。

<input class="widefat" type="text" id="<?php echo $this->get_field_id( 'event_id' ); ?>" name="<?php echo $this->get_field_name( 'event_id' ); ?>" value="<?php echo esc_attr( $event_id ); ?>">

1 个答案:

答案 0 :(得分:0)

找到我自己的问题的答案。看起来我的选择标记缺少名称字段。这是我用

替换它的行
                    <select class="widefat" name="<?php echo $this->get_field_name('event_id'); ?>">