在微件中,选择字段的值不会更新,保存后会更改

时间:2012-09-02 作者:Macxim

我正在构建一个简单的小部件,它允许用户从一系列帖子中选择一篇帖子
出于某种原因,当我选择一个选项时,我相信它实际上已被选中,但该选项不会保留在“选择”字段中。

我想我的错误在下面几行,但我没有设法纠正它。也许调用\\u ID不是这样做的方式…:

<option value="<? echo the_ID(); ?>" <?php selected(the_ID(), $instance[\'post_to_display\']); ?>><?php the_title(); ?></option>
这是我的代码:

class Simple_Widget extends WP_Widget{

  function Simple_Widget() {
    $widget_ops = array(
      \'classname\' => \'w_reports\',
      \'description\' => __(\'Use this widget to add a post to the sidebar\', \'theme\'));
    $this->WP_Widget(\'w_reports\', __(\'Simple_Widget\', \'roots\'), $widget_ops);
  }

  function widget($args, $instance) {
    extract( $args );
    $post_to_display = $instance[\'post_to_display\'];     
  }

  function update($new_instance, $old_instance) {
    $instance[\'post_to_display\'] = $new_instance[\'post_to_display\'];
    return $instance;
  }

  function form($instance) {
  ?>
    <p>
      <label for="<?php echo $this->get_field_id(\'post_to_display\'); ?>">Choose a post to display:</label> 
      <select id="<?php echo $this->get_field_id(\'post_to_display\'); ?>" name="<?php echo $this->get_field_name(\'post_to_display\'); ?>" class="widefat">

      <?php // My query
        $the_query = new WP_Query( \'post_type=my-post\' );
        while ( $the_query->have_posts() ) : $the_query->the_post();
      ?>
      <option value="<? echo the_ID(); ?>" <?php selected(the_ID(), $instance[\'post_to_display\']); ?>><?php the_title(); ?></option>

      <?php endwhile;
      wp_reset_postdata();
      ?>
     </select>
  </p>

  // Just a test    
  <?php echo $instance[\'post_to_display\']; ?>
我做错了什么?提前感谢您的帮助!

2 个回复
SO网友:WPler

使用get\\u the\\u ID()代替\\u ID()。\\u ID()将回显发布的ID:

<option value="<? the_ID(); ?>" <?php selected(get_the_ID(), $instance[\'post_to_display\']); ?>><?php the_title(); ?></option>

SO网友:Macxim

由于某种原因,这(发现here) 作品然而,我仍然没有设法使它适应我想做的事情。因此,这只是部分回答了我的问题。

<select id="<?php echo $this->get_field_id(\'posttype\'); ?>" name="<?php echo $this->get_field_name(\'posttype\'); ?>" class="widefat" style="width:100%;">
  <?php foreach(get_post_types($getposttype_args,\'names\') as $post_type) { ?>
    <option <?php selected( $instance[\'posttype\'], $post_type ); ?> value="<?php echo $post_type; ?>"><?php echo $post_type; ?></option>
  <?php } ?>      
</select>

结束

相关推荐

如何在没有插件的情况下使导航成为<SELECT>列表?

Possible Duplicate:Show a WP 3.0 Custom Menu in an HTML Select with Auto-Navigation? 我为此尝试了几种解决方案,但都没有奏效<我设法将导航列表<select><option> 列表,但不包含页面名称,不显示其URL有什么想法吗?如果没有外部插件,我如何制作一个功能齐全的选择列表导航?(理想的解决方案是页面URL显示为value 在option 因此我可以使用JavaScript进行页面导航)