OrderbyCPTカスタムフィールドが機能しない

Aug 20 2020

プラグインを開発していて、イベントのCPTを作成しました。これには、カスタムフィールドがあります(フィールドの1つは日付用です)。

すべてが正常に機能し、FieldsとCPTが機能しており、フロントエンドに表示することもできます。しかし、問題は、date_happeningというカスタムフィールドから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_value_date'、 'meta_value_num'なども使用しようとしましたが、成功しませんでした。しかし、注文値を「DESC」から「ASC」に変更すると、すべての投稿が逆の順序で送信されるため、post_date値でクエリを実行しているように見え、「order」引数以外の引数は完全に無視されます。

また、date_happeningフィールドの値がデータベーステーブルwp_postmetaにどのように保存されているかを確認しましたが、適切な形式であるようです。

すべてが理解できることを願っています。誰かが私を助けてくれれば幸いです。

回答

JagrutiRakholiya Aug 20 2020 at 21:33

順序付けするには、値の代わりにmeta_keyを使用する必要があります date_happening metakey

これを試して:

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