我的小部件无法保存配置表单中输入的值。它只是一个标签,但是当我按下保存按钮时它似乎没有保存数据。
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 ); ?>">
答案 0 :(得分:0)
找到我自己的问题的答案。看起来我的选择标记缺少名称字段。这是我用
替换它的行 <select class="widefat" name="<?php echo $this->get_field_name('event_id'); ?>">