Orderby CPT自定义字段不起作用

时间:2020-08-20 作者:user193434

我正在开发一个插件,我为事件制作了一个CPT,它有自定义字段(其中一个字段是日期)。

一切正常,Fields和CPT正在工作,并在前端显示它们。但问题是,我无法从名为date\\u oching的自定义字段中按日期排序我的CPT帖子。

我曾在许多文章中试图找到我的问题的答案,但所有的文章都指向我尝试过的相同解决方案,但由于一些未知的原因,这些解决方案对我不起作用。

我在这里提供代码。

这就是我如何为我的cpt创建自定义字段的方法。


  public function register()
  {
      add_action(\'admin_init\', array($this, "atAdminInit"));
      add_action(\'save_post\', array($this, "atSavePost"));
  }

  public function atAdminInit()
  {
    add_meta_box("date_happening-meta", "Date", array($this, "atDateHappening"), "aegeeevents", "side", "low");
  }

  public function atSavePost()
  {
    global $post;

    if(is_null($post)){
      return;
    }
    update_post_meta($post->ID, "date_happening", $_POST["date_happening"]);
  }

  function atDateHappening()
  {
    global $post;
    $custom = get_post_custom($post->ID);
    $date_happening = $custom["date_happening"][0] ?? \'\';
    ?>
    <label>Year:</label>
    <input name="date_happening" type="date" value="<?php echo $date_happening; ?>"/>
    <?php
  }

这就是许多文章告诉我的查询参数按自定义字段值排序事件的方式。

          $args = array(
            \'post_type\' => \'aegeeevents\',
            \'meta-value\' => \'date_happening\',
            \'orderby\' => \'meta_value\',
            \'order\' => \'DESC\',
          );

          $query = new \\WP_Query($args);


我也尝试过使用“meta\\u value\\u date”、“meta\\u value\\u num”等,但没有成功。但如果我将order值从“DESC”更改为“ASC”,那么我的所有帖子都将以相反的顺序出现,因此它似乎是按post\\u date值查询的,并且完全忽略了我的参数,除了“order”参数。

我还检查了date\\u occurrence字段值是如何保存在数据库表wp\\u postmeta中的,它的格式似乎很好。

enter image description here

我希望一切都可以理解,如果有人能帮助我,我将不胜感激。

1 个回复
最合适的回答,由SO网友:Jagruti Rakholiya 整理而成

您必须使用meta\\u键而不是value来按顺序排序date_happening metakey

尝试以下操作:

\'meta_key\' => \'date_happening\',
\'orderby\' => \'meta_value\',