【发布时间】:2011-03-24 13:52:58
【问题描述】:
我有一个帖子页面的查询。
它根据自定义帖子类型和自定义字段值返回结果。现在,我添加了根据另一个自定义字段对结果进行排序的功能。
$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 会更容易吗?如果是这样,我该怎么做。
更新
我已经进一步研究了这个问题。似乎如果没有为“超长”指定值,则自定义字段不会添加到数据库中的 wp_postmeta 中。如果我给帖子一个超长的值,然后返回并删除它,它实际上确实将结果包含在我的查询中,因为该字段仍然存在于数据库中。那么,如果这个自定义字段有值,我怎样才能将它输入到数据库中呢?
【问题讨论】:
-
您能否确认排除没有“超长”元值的帖子?我会说查询将排除没有 meta_key 'over-length' 的帖子,但如果它们的字段没有值,则会包括它们。
-
你是对的。那么如果该字段留空,我怎样才能将 meta_key 添加到数据库中。
-
如果使用 meta_key 进行排序并且您的帖子中此值留空,您打算如何将它们包含在排序中?您是否可以在您提到的仅包含没有 meta_key 的帖子的查询之后运行第二个查询?
标签: wordpress sql-order-by custom-fields