我正在使用一个自定义的帖子类型,并在主页上每页显示20个。我正在使用QP\\U查询。
自定义post类型的一个自定义字段(称为mixstapes)是一个名为“unreleased”(设置为true/false)的复选框,它基本上是一个我不想包含在循环中的post。
到目前为止,我在while循环中放置了一个条件if,仅当“unreleased”未设置为“true”时才显示,但问题是它(显然)不适用于循环本身,因此。。。分页“看到”40篇文章(2页),而实际上只有1张未发布的相册(应该是1页,但显示了2页)。在第二页上,没有结果。
同样,当我想显示发布的“前10张”专辑时,它实际上只显示9张,因为一张未发布的专辑没有从实际循环中删除,只是在事实发生后有条件地“隐藏”。
我该如何解决这个问题,以便循环跟踪给定特定custom\\u字段条件下已删除的帖子?
Thnkas公司
最合适的回答,由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_Query
和query_posts
在这里使用是正确的(如果它不是页面上的主查询,那么您应该使用get_posts
相反,它接受相同的参数)。
注意:如果您决定使用get_posts
或WP_Query
(但不适用于query_posts
这会改变主查询),则不应进行合并。(如果您不确定应该使用哪一种,请立即正式查看此内容,\'great answer\' :D)