【问题标题】:order by custom field include even if empty - wordpress按自定义字段排序,即使为空 - wordpress
【发布时间】: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


【解决方案1】:

关于您的最后一个请求 - 一种在所有帖子上添加 meta_key(自定义字段)的方法,即使它留空:

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

【讨论】:

    猜你喜欢
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多