複数の日付形式カスタムフィールドの並べ替え
-
当方のスキルは、PHPはネットで調べてコピペする事がメインで、自作することはできません。
WPのバージョンは4.8.1です。現在、1記事(支店情報が入った記事)に対して日付のカスタムフィールド(デイトピッカーで入力)を4つ設定(当番日)し、当番表を作ろうとしています。
先週meta_keyを複数の条件で変数に代入しindexに表示でも質問させていただいた内容で、「まずはじめに全ての記事を表示してから、表示する条件を指定しては?」と言う教えをいただき、表示をしようとしています。今問題になっているのが、
・1記事のタイトルを当番日の数(4つあれば4回)表示したいが表示されない。
・当番日の若い順に表示したいが順番が投稿日順になってしまっている。
の2点です。コードは以下の様にしています。
当番日を入れていないデータと、表示している日以前の日付を表示しない様にしたかったので、`’meta_compare’ => ‘>=’,
‘meta_value’ => date(“Y/m/d”),
‘meta_type’ => ‘DATE’,`
を指定し、さらにmeta_queryでvalueとcompareを下記のコードの様に指定しています。<?php global $post; //表示している日以降の日の値を表示 $args = array( 'post_type' => 'member-ph', 'posts_per_page' => -1, 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_compare' => '>=', 'meta_value' => date("Y/m/d"), 'meta_type' => 'DATE', 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'duty-date', 'value' => ' ', 'compare' => '!=', 'order' => 'ASC', ), array( 'key' => 'duty-date02', 'value' => '', 'compare' => '!=', 'order' => 'ASC', ), ), ); $myposts = get_posts( $args ); foreach ( $myposts as $post ) : setup_postdata( $post );
「当番日を4つ」と前述しておりますが、テストなのでコード内では2つしか指定していません。
コードの中の一番下のforeachの中で、当番日1(duty-date)が値があったら表示し、さらに当番日2(duty-date02)があったら表示という風にループを回してやることで最初の「・1記事のタイトルを当番日の数(4つあれば4回)表示したいが表示されない。」が改善されると思うのですが、ifしか使ったことがないので、表示できていません。
「・当番日の若い順に表示したいが順番が投稿日順になってしまっている。」については、orderが機能していない様なので、meta_valueのあたり変更しなければならないでしょうか?
ご教授ください。
- トピック「複数の日付形式カスタムフィールドの並べ替え」には新たに返信することはできません。