Пользовательские поля Orderby CPT не работают

Aug 20 2020

Я разрабатываю плагин, и я сделал CPT для событий, и у него есть настраиваемые поля (одно из полей предназначено для даты).

Все работает нормально, Поля и CPT работают, их отображение на интерфейсе тоже работает. Но проблема в том, что я не могу упорядочить свои сообщения CPT по дате из настраиваемого поля date_happening.

Я пытался найти ответ на свою проблему во многих статьях, но все статьи указывают на то же решение, которое я пробовал, но по какой-то неизвестной причине у меня не работает.

Я предоставляю здесь код.

Вот как я создаю настраиваемые поля для своего файла 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_value_date, meta_value_num и т. Д., Но безуспешно. Но если я изменю значения порядка с «DESC» на «ASC», тогда все мои сообщения будут приходить в противоположном порядке, поэтому кажется, что он запрашивает значение post_date и полностью игнорирует мои аргументы, кроме аргумента «порядок».

Я также проверил, как значение поля date_happening сохраняется в таблице базы данных wp_postmeta, и, похоже, оно находится в хорошем формате.

Надеюсь, все было понятно, и буду признателен, если кто-нибудь сможет мне помочь.

Ответы

JagrutiRakholiya Aug 20 2020 at 21:33

Вы должны использовать meta_key вместо значения, чтобы упорядочить его по date_happening metakey

Попробуй это:

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