自定义字段的顺序包括即使空 - wordpress

时间:2011-03-24 13:52:59

标签: wordpress sql-order-by custom-fields

我有一个帖子页面的查询。

它根据自定义帖子类型和自定义字段值返回结果。现在我已经添加了根据另一个自定义字段订购结果的功能。

$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') ) ) );

我遇到了一些问题。我通过名为“超长”的自定义字段对结果进行排序,但似乎如果帖子中没有包含“超长”值,则会从结果中排除。

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

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

更新

我进一步研究了这个问题。似乎如果没有给'over-length'赋值,则自定义字段不会添加到数据库中的wp_postmeta。如果我给一个帖子一个超长的值然后返回并删除它确实包括我的查询中的结果,因为该字段仍然存在于数据库中。那么,如果它有一个值,我如何才能将这个自定义字段输入数据库呢?

1 个答案:

答案 0 :(得分:0)

关于您的上一个请求 - 即使是空白,也可以在所有帖子上添加meta_key(自定义字段):

我经常使用插件Custom Fields Template来做这种事情。它类似于您正在使用的那个(更多字段),但它为您提供了许多可以使用字段的可能性,最重要的是在这种情况下,您可以调整隐藏字段和默认值。如果留空,您可以设置默认值=''(空格)以插入字段。或者,通过更多工作,修改插件代码以将所有字段插入到DB,而不检查是否清空值。对于CustomFieldsTemplate,它应该不难做到。