• 解決済 Anonymous User

    (@anonymized-18839617)


    カスタム投稿一覧画面で、日付型のカスタムフィールド2種類を使って並び替えることのできるプラグインや方法を探しています。

    開始日と終了日を持つイベントを一覧に並べたとき、

    ・終わっていないもの(終了日が今日より大きいもの)を開始日の昇順
     ↓
    ・終わったもの(終了日が今日より小さいもの)を終了日の降順

    に並ぶようにしたいのですが、何をどこから考えたらよいかわからず、こういったことが簡単にできるプラグインがあればと思った次第です。
    たとえば今日が2024/5/10であれば、以下のように並んでほしい感じです。

          開始日    終了日
    運動会   2024/5/20  2024/5/21
    傘祭り   2024/6/10   2024/6/15
    七夕    2024/7/ 7   2024/7/ 7
    海開き   2024/7/10   2024/7/10
    夏休み   2024/7/21   2024/8/31
    終戦記念日 2024/8/15   2024/8/15
    菊の節句  2024/9/ 9   2024/9/ 9
    GW    2024/4/30   2024/5/ 5  (ここから終了済みのイベント)
    入学式   2024/4/10   2024/4/10
    新学期   2024/4/ 2   2024/4/ 2
    ひな祭り  2024/3/ 3   2024/3/ 3
    節分    2024/2/ 3   2024/2/ 3
    お正月   2024/1/ 1   2024/1/ 3


    開始日順、終了日順に並べ替えることはできました。
    何かアドバイスいただければ幸いです。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター けい (Kei Nomura)

    (@mypacecreator)

    こんにちは。残念ながらそういったことがピンポイントでできるプラグインは思いつかないのですが、WP_Queryを使って似たようなことを試みたブログを以前見たことがあったのでご紹介します。

    二つのちがうWp-queryを合体して、ページネーション付きで表示する方法
    https://www.letters51.jp/wordpress%E9%96%A2%E9%80%A3/2109/

    ※私自身が実装を試したものではないのでご了承ください。

    トピック投稿者 Anonymous User

    (@anonymized-18839617)

    ありがとうございます!
    教えていただいたブログを拝見し、Wp-queryをふたつ作って合体してページングすればよいということがわかり、色々調べて各所の情報をコピペして変更して以下の内容で思った通りの並び順が実現できました。

    $post_type = 'event';
    $now = wp_date( 'YmdHis' ); //今

    $args1 = get_posts( array(
    'post_type' => $post_type,
    'posts_per_page' => -1,
    'paged' => get_query_var('paged'),
    'post_status' => "publish",
    'meta_key' => '【イベント開催日】',
    'orderby' => 'meta_value',
    'order'=> 'ASC', //昇順
    'type' => 'DATE', //日付
    'meta_query' => array(
    'relation' => 'AND',
    array(
    'key' => '【イベント終了日】',
    'value' => $now,
    'compare' => '>=',
    'type' => 'DATE'
    )
    ),
    ));
    $args2 = get_posts( array(
    'post_type' => $post_type,
    'posts_per_page' => -1,
    'paged' => get_query_var('paged'),
    'post_status' => "publish",
    'meta_key' => '【イベント開催日】',
    'orderby' => 'meta_value',
    'order'=> 'DESC', //降順
    'type' => 'DATE', //日付
    'meta_query' => array(
    'relation' => 'AND',
    array(
    'key' => '【イベント開催日】',
    'value' => $now,
    'compare' => '<',
    'type' => 'DATE'
    )
    ),
    ));


    $new_query = new WP_Query();
    $posts = array_merge( $args1, $args2 );

    何をどう考えればいいのかすらわからなかったので、情報をいただいて基本的な考え方が分かり、とても助かりました。
    本当にありがとうございました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • このトピックに返信するにはログインが必要です。