前提
動画欄 or Youtube欄に動画へのパスが存在します。
1.動画欄はオンエア日の15時に予約公開されるという条件がありますので、オンエア日と予約のON/OFFスイッチがあります。
動画欄にパスの入力がある。(カスタムフィールド名:'movie',形式はURL)
オンエア日の15時を過ぎている(カスタムフィールド名:'onair',形式は日付8桁、例20221021)
公開予約のスイッチがON(カスタムフィールド名:'movie_open',形式はtrue/flase)
2.Youtube欄にパスがある(カスタムフィールド名:'youtube',形式はURL)
1,2どちらかの条件を満たすものorで取得するWP_Queryを書いたつもりなのですが、
上手く動いてくれません。
どこに間違いがあるのでしょうか?
発生している問題・エラーメッセージ
下記コードだと「2.Youtube欄にパスがある」に該当ある場合しか表示されない
該当のソースコード
php
1<?php 2$start_d = new DateTime(get_field('onair', false, false));//放送日 3$current = date_i18n('Y-m-d H:i:s');//カレントタイム 4$start = date_format($start_d,'Y-m-d 15:00:00');//放送日の15時 5 6$args = array( 7 'post_type' => 'post', 8 'post_status' => 'publish', 9 'posts_per_page' => -1, 10 'meta_query' => array( 11 'relation' => 'OR', 12 array( 13 'key' => 'youtube', 14 'value' => '', 15 'compare' => '!=' 16 ), 17 array( 18 'relation' => 'AND', 19 array( 20 'key' => 'movie', 21 'value' => '', 22 'compare' => '!=' 23 ), 24 array( 25 'key' => 'movie_open', 26 'value' => true 27 ), 28 array( //<--------------------------ここの扱いか日時の指定に問題があると思われます------------------------- 29 'key' => $start, 30 'value' => $current, 31 'compare' => '<=', 32 'type' => 'time' 33 ) 34 ) 35 ) 36); 37 $top_news = new WP_Query( $args ); 38 if($top_news->have_posts()): while($top_news->have_posts()): $top_news->the_post(); ?> 39 40 <!-- 繰り返し処理する内容 --> 41 42 <?php endwhile; ?> 43<?php wp_reset_postdata(); ?> 44<?php else: ?> 45<!-- 投稿が無い場合の処理 --> 46動画つきのコンテンツがありません。 47<?php endif; ?>
以前はYotube欄が無かったので、繰り返しの内で比較して出力していました。
php
1<?php if($current > $start): ?> 2 3 <!-- 繰り返し処理する内容 --> 4 5<?php endif; ?>
また、keyに変数を指定せず、時間に加工するまえのカスタム投稿タイプを直接入れる以下のパータンはうまく動いてくれてます。
php
1$current = date_i18n('Y-m-d');
php
1 array( //ここの扱いに問題があると思われます。 2 'key' => 'onair', 3 'value' => $current, 4 'compare' => '>=', 5 'type' => 'date' 6 )
$startの加工の仕方に問題があるのかと思いますが、どのようにしたら上手にcompareしてくれるでしょうか?
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/21 06:27 編集
2022/10/21 06:27 編集
2022/10/21 06:31
2022/10/21 07:05
2022/10/21 07:07