###前提・実現したいこと
こちらの記事「WordPress 投稿一覧に年と月の見出しを付ける方法」を元にコードを書き換えたが、うまく動作しません。
日付の代わりに、カスタムフィールドの値を使って、同じことを実現しようとしています。
カスタムフィールド('meta_key' => 'publication_date')には、テキストで日付が入っています。
例:2016/10/06、デフォルトで、11/11/11(記事の投稿時点で日付がわからないものがあるため)。
###該当のソースコード
<?php // 投稿一覧に年と月の見出しを付ける $args = array( 'post_type' => 'shop', // 任意のカスタム投稿タイプを指定 'posts_per_page' => -1, // 1ページに表示する最大投稿数を指定、-1は全てを表示 'order' => 'DESC', // 降順でソート 'orderby' => 'meta_value', 'meta_key' => 'publication_date', ); $the_query = new WP_Query($args); if($the_query->have_posts()): $post_year = false; // 年の比較用変数の初期化 $post_month = false; // 月の比較用変数の初期化 $now0 = post_custom('publication_date'); $now2 = date("Y",strtotime($now0)); $now3 = date("m",strtotime($now0)); echo '<h1>投稿一覧</h1>'; while ($the_query->have_posts()): $the_query->the_post(); if( $post_month != $now3 ) { // 比較の値と投稿月が異なる場合に以下を出力 if ( $post_month !== false ) { // 比較の値と投稿月が異なる場合に以下を出力 echo '</ul>'; } if ( $post_year != $now2 ) { // 比較の値と投稿年が異なる場合に年を出力 echo '<h2>'.$now2.'年</h2>'; //投稿の年を出力 } echo '<h3>'.$now3.'月</h3>'; //投稿の月を出力 echo '<ul>'; } echo '<li><a href="'.get_the_permalink().'">'.post_custom('publication_date').'</a></li>'; // 投稿のリンクとタイトルを出力 $post_year = $now2; // 年月の比較用の変数に今の投稿の年月を代入 $post_month = $now3; // 年月の比較用の変数に今の投稿の年月を代入 endwhile; wp_reset_postdata(); echo '</ul>'; endif; ?>
なぜか、1970年の01月になってしまいます。
参考にしたサイトのまま、投稿日を元にしたものだとちゃんと表示されます。
解決の糸口が見つかればありがたいです。
###補足情報(言語/FW/ツール等のバージョンなど)
wordpress4.6.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/07 00:01
2016/10/07 01:00