2011-03-24 64 views
1

我有一个帖子的页面的查询。由自定义字段包括即使为空的订单 - wordpress

它返回基于自定义帖子类型和自定义字段值的结果。现在我添加了基于另一个自定义字段排序结果的功能。

$loop = new WP_Query(array ('post_type' => 'new', 'orderby' => 'meta_value_num', 'meta_key' => 'over-length', 'meta_query' => array(array('key' => 'over-make', 'value' => 'Doral', 'compare' => 'LIKE')))); 

我遇到了一点问题。我通过一个名为“over-length”的自定义字段来排序结果,但似乎如果帖子没有包含“over-length”的值,它将被排除在结果之外。

我想知道如何更改我的代码,以便它包含的帖子没有orderby的值。

也只是想到了一个解决方法,但不知道该怎么做。我正在使用名为“更多字段”的插件来创建我的自定义字段。检查“超长”字段是否为空并将其设置为0会更容易吗?如果是的话,我该如何去做这件事。

更新

我已经研究过这一问题的远一点。看起来,如果没有赋予'over-length'值,则自定义字段不会添加到数据库中的wp_postmeta。如果我给一个帖子一个超长的值,然后返回并删除它,实际上包含结果在我的查询中,因为该字段仍然存在于数据库中。那么如何让这个自定义字段被输入到数据库中,如果它有值或不是?

+0

你能确认没有meta_value'over-length'的帖子被排除吗?我会说,查询会排除没有meta_key'超长'的帖子,但如果他们有没有价值的字段将包括他们。 – AJJ 2011-03-24 16:33:25

+0

你说得对。所以如何将meta_key添加到数据库中,如果该字段留空。 – Adam 2011-03-24 17:29:09

+1

如果meta_key用于排序,并且您的帖子中此值留空,那么您打算如何将它们包含在排序中?您可以在提到的查询之后运行第二个查询,只包含没有meta_key的帖子吗? – ckaufman 2011-03-24 18:23:03

回答

0

关于你的最后一个请求 - 一种方式来对哪怕是空白的所有帖子添加meta_key(自定义字段):

我经常使用的插件Custom Fields Template对于这种事情。它类似于你正在使用的那个(更多的领域),但是它给你很多玩这些领域的可能性,对于这种情况最重要的是,你可以调整隐藏的领域和默认值。你也许可以设置一个默认值=''(空格),如果留空即可插入该字段。或者,稍加修改,修改插件代码,将所有字段插入到数据库中,而不检查数值是否为空。在CustomFieldsTemplate的情况下,它不应该很难做到。