search
LoginSignup
9

More than 5 years have passed since last update.

posted at

【wordpress】イベントの期間中と期間外で記事を出し分ける方法

やりたいこと

イベント開催のお知らせ記事を、一覧ページで「期間中」と「期間外」で出し分ける

やり方

wordpressのプラグイン、acf(Advanced Custom Fields)を使います。
(ノーマルなカスタムフィールドでも出来ます。)

◼︎acfの設定

デイトピッカーを使います。
以下のように入力。

image01.jpg

参考:Advanced Custom Fieldsの使い方

◼︎投稿画面の設定

acfを上記のように入力すると、管理画面に以下のような項目が表示されるので、カレンダーからイベントの終了日を選択します。
すると「yyyy/mm/dd」の形式で表示されます。

image02.jpg

◼︎ファイルで出力

以下の条件で表示させます。

・イベント終了日が現在の日付よりも未来ならば「期間中」に表示
(現在の日付も含む)
・イベント終了日が現在の日付よりも過去ならば「期間外」に表示

archive.php
<h2>期間中</h2>
<?php /*postSingle:START*/ ?>
    <?php
        $args = array(
            'meta_value'     => date('Y/m/d'),// dateで現在の日時を取得
            'meta_key'       => '終了日(yyyy/mm/dd)',
            'meta_compare'   => '>=',// meta_valueとmeta_keyを比較して未来の場合のみ表示
            'posts_per_page' => -1,// 期間中のすべての投稿を表示
        );
        $wp_query = new WP_Query( $args );
    ?>
    <section>
        <?php if ( $wp_query->have_posts() ): ?>
            <?php while ( $wp_query->have_posts() ):
            $wp_query->the_post(); ?>
                <?php //ここにループで表示させたいものを書く ?>
            <?php endwhile; ?>
        <?php else : ?>
            <p>期間中の投稿はありません。</p>
        <?php endif; ?>
        <?php wp_reset_query(); ?>
    </section>
<?php /*postSingle:END*/ ?>

<h2>期間外</h2>
<?php /*postSingle:START*/ ?>
    <?php
        $args = array(
            'meta_value'    => date('Y/m/d'),// dateで現在の日時を取得
            'meta_key'      => '終了日(yyyy/mm/dd)',
            'meta_compare'  => '<',// meta_valueとmeta_keyを比較して過去の場合のみ表示
            'posts_per_page' => 5,
        );
        $wp_query = new WP_Query( $args );
    ?>
    <section>
        <?php if ( $wp_query->have_posts() ): ?>
            <?php while ( $wp_query->have_posts() ):
            $wp_query->the_post(); ?>
                <?php //ここにループで表示させたいものを書く ?>
            <?php endwhile; ?>
        <?php else : ?>
            <p>記事が見つかりませんでした。</p>
        <?php endif; ?>
        <?php wp_reset_query(); ?>
    </section>
<?php /*postSingle:END*/ ?>

参考:
【WordPress】カスタムフィールドの日付で期間内のスケジュールだけを並べ替えて表示する
[WordPress] カスタムフィールドの値で条件を絞り込み、ループで記事一覧を表示する

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
9