如果帖子处于自定义POST_STATUS,则按帖子ID进行的WP_QUERY无效

时间:2015-02-03 作者:Christine Cooper

我想使用ID显示一篇文章WP_Query(). 为此,我使用以下参数:

$args = array(
   \'p\' => 61202);
这应该行得通,但似乎行不通if 这篇文章是定制的post_status.

为了解决这个问题,我尝试了以下方法:

$args = array(
   \'p\' => 61202, // id of post
   \'post_type\' => \'any\', // apply to all post types
   \'post_status\' => \'my_custom_status\' // the custom post status
);
但这仍然不起作用。Why?!

是否存在已知错误?我正在wp管理区域运行此代码。如果post处于任何WP core post状态,则其工作正常。

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

WP_Querya bug (#29167) 当你尝试获取帖子时(几乎?)任何其他状态publish. 此错误似乎已在行李箱中修复。我还没有测试它,所以我无法判断它是否涵盖了您的用例。尝试一下,如果没有,就在那里给出反馈。

有两种解决方法:

使用get_post( $post_id ). 它运行自己的查询,不受此bug的影响。

如果您不知道帖子ID,请使用自定义DB查询:

    $sql      = "SELECT * FROM $wpdb->posts WHERE post_status = %s AND post_type = %s";
    $prepared = $wpdb->prepare( $sql, $status, $post_type );
    $posts    = $wpdb->get_results( $sql );

结束

相关推荐

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

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