質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

5760閲覧

【WP】カスタムフィールドの日付で今日と以降の記事一覧(5件)を出力したい

k_aiko

総合スコア11

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/04/26 09:52

前提・実現したいこと

「Advanced Custom Fields」で入力した日付の値を元に、
最新のイベント情報(今日と今後のイベント)記事一覧(5件)を出力できず困っております。
お知恵を貸していただければ幸いです <(_ _)>

現在のソースは、昇順で古い日付のイベントが一番上に出るだけになっています。

問題と思われる箇所

// get posts $posts = get_posts(array( 'post_type' => 'schedule', 'posts_per_page' => 5, 'meta_key' => 'event_date', 'orderby' => 'meta_value', 'order' => 'ASC', ));

該当のソース

<?php // get posts $posts = get_posts(array( 'post_type' => 'schedule', 'posts_per_page' => 5, 'meta_key' => 'event_date', 'orderby' => 'meta_value', 'order' => 'ASC', )); if( $posts ): ?> <ul class="schedule-list"> <?php foreach( $posts as $post ): setup_postdata( $post ) ?> <li><a href="<?php the_permalink(); ?>"> <div class="list_text"><time><?php $date = get_field('event_date', false, false); //値の取得 $date = new DateTime($date); //日付オブジェクトの作成 echo $date->format('Y.m.d (D)'); //日付の表示 ?></time><?php if ($terms = get_the_terms($post->ID, 'event_cate')) { foreach ( $terms as $term ) { echo ('<span>') ; echo esc_html($term->name) ; echo ('</span>') ; } } ?></div> <p class="title"><?php the_title(); ?></p> </a></li> <?php endforeach; ?> </ul> <?php wp_reset_postdata(); ?> <?php endif; ?>

試したこと

元のコードはADCから拝借しました
advancedcustomfields.com

以下を参考にしました
カスタムフィールドに入れた日付順に記事一覧を並べ替える方法

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

get_posts を使われていますが、Orderで並び替えはしていますが、検索(絞り込み)条件で範囲を指定していませんので、全件が対象になります。

meta_valuemeta_compare を使って、絞り込み条件を設定してください。

テンプレートタグ/get_posts


とりあえず、こんな感じでしょうか? 日付周りは、ACF のドキュメントを見て調整してください。

$today = date("Ymd"); $posts = get_posts(array( 'post_type' => 'schedule', 'posts_per_page' => 5, 'meta_key' => 'event_date', 'meta_value' => $today, 'meta_compare' => '>=', 'orderby' => 'meta_value', 'order' => 'ASC', ));

投稿2019/04/26 10:11

編集2019/04/26 10:12
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

k_aiko

2019/04/26 12:40

教えていたコードで実現できました・・・!ありがとうございます!! 条件の設定ができていなかったということなんですね・・・勉強します。 大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問