如何从WP_Query中删除帖子,以便分页正确?

时间:2012-03-19 作者:Tallboy

我正在使用一个自定义的帖子类型,并在主页上每页显示20个。我正在使用QP\\U查询。

自定义post类型的一个自定义字段(称为mixstapes)是一个名为“unreleased”(设置为true/false)的复选框,它基本上是一个我不想包含在循环中的post。

到目前为止,我在while循环中放置了一个条件if,仅当“unreleased”未设置为“true”时才显示,但问题是它(显然)不适用于循环本身,因此。。。分页“看到”40篇文章(2页),而实际上只有1张未发布的相册(应该是1页,但显示了2页)。在第二页上,没有结果。

同样,当我想显示发布的“前10张”专辑时,它实际上只显示9张,因为一张未发布的专辑没有从实际循环中删除,只是在事实发生后有条件地“隐藏”。

我该如何解决这个问题,以便循环跟踪给定特定custom\\u字段条件下已删除的帖子?

Thnkas公司

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

与其查询所有帖子,然后只显示符合条件的帖子,不如查询符合条件的帖子。WP_Query 允许您使用meta-key/meta-value 属性。

例如,要获取自定义字段unreleased 是“false”,在循环之前的某个地方:

global $wp_query;
$customField = array( \'meta_key\' => \'unreleased\', \'meta_value\' => \'false\' );
$args = array_merge( $wp_query->query,$customField);
query_posts( $args );
这不是最有效的做事方式,但却是最简单的。我们将现有查询(包括分页参数)合并到元键/值查询。

你必须决定WP_Queryquery_posts 在这里使用是正确的(如果它不是页面上的主查询,那么您应该使用get_posts 相反,它接受相同的参数)。

注意:如果您决定使用get_postsWP_Query (但不适用于query_posts 这会改变主查询),则不应进行合并。(如果您不确定应该使用哪一种,请立即正式查看此内容,\'great answer\' :D)

结束

相关推荐

Contact form 7 post loop

我使用的是联系方式7。它说使用以下[contact-form-7 id=\"23\" title=\"Contact form 1\"] 在我的帖子或页面中,我已将其放置在我的帖子中。现在,我正在使用此代码抓取帖子并将其吐到我的自定义页面上。php文件。然而,它只是吐出页面的标题和日期,而内容“发布”没有任何形式可见。还有,将联系人表单放在页面上并能够使用css等联系人表单7进行移动的最佳方式是什么。 <!-- Start the Loop. --> <?php if