管理页面帖子ID wp_Reset_postdata不起作用

时间:2018-07-06 作者:Jimbo

有2个插件,为WP中的一些额外woocommerce自定义选项提供电源。两个钩子都连接到加载的plugins\\u。

从外观上看,第一个插件并没有重置为原始的post数据。

一个插件是带有post metaboxes的下拉列表示例。该插件使用WP\\u Query查询数据库,以输出一个选择选项框。我在之后运行wp\\u reset\\u postdata()。

第二个插件是一个不同的选择框,它没有使用正确的post id进行拉取,因此元数据永远不会正确保存,因为id不正确,也永远不会在加载时选择正确的选项。

禁用第一个示例插件第二个插件与第一个插件一样工作,因为之前没有运行其他查询。

正在请求重置post数据,但什么也没有发生。

 public function get_samples_array(){

    $args = array(
        \'post_type\' => \'product\',
        \'posts_per_page\' => \'-1\',
        \'tax_query\' => array(
                array(
                    \'taxonomy\' => \'product_cat\',
                    \'field\' => \'id\',
                    \'terms\' => $this->sample_product_category_id
                )
            )
        );

    $results = new WP_Query( $args );

    if ( $results->have_posts() ) {

        $array[]=\'None\';

        while ( $results->have_posts() ) : $results->the_post();
            $array[get_the_ID()]=get_the_title();
        endwhile;
    }

    wp_reset_postdata();

    return $array;
}
以上是我正在使用的代码部分。

似乎wp\\u reset\\u postdata()不起作用。我尝试了各种各样的事情,但都没有成功,我被难住了。

我不想使用像intval($\\u GET[\'post\')这样的糟糕做法来实现它。

这可能是我挂接插件的地方,它使wp\\u reset\\u postdata()无法按预期运行吗?

1 个回复
最合适的回答,由SO网友:Jimbo 整理而成

在尝试了各种解决方法之后,我的工作方式是不使用\\u post()。WP\\u Query应该仍然可以工作,但我已经切换到get\\u posts()。

    $results = get_posts( $args );

    foreach ( $results as $p ):

        $array[$p->ID] = $p->post_title;

    endforeach;

    return $array;
令人沮丧的是,这似乎是某些管理页面的问题。

这是一张与问题相关的票据:https://core.trac.wordpress.org/ticket/18408

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post