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

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

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

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

Q&A

解決済

1回答

3594閲覧

wordpressの固定ページで投稿記事の最新の年だけの一覧ページを作りたい

hiro421

総合スコア63

WordPress

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

0グッド

0クリップ

投稿2017/01/06 10:18

###前提・実現したいこと
wordpressの固定ページを使って投稿記事の最新の年だけの一覧ページを作りたいのですが上手くいきません。

###発生している問題・エラーメッセージ
下記ソースコードをpage.phpに記載しているのですが、
2017年の記事を投稿しても、なぜか2016年の記事一覧になってしまいます。
archive.phpにも同様の記載をしているのですが、こちらは正常に表示されています。

###該当のソースコード

php

1<?php 2 foreach((get_post()) as $date) { // 最新記事の年を取得 3 $postsYear = date('Y',get_post_time()); 4 break ; 5 } 6 global $post; 7 $posts = get_posts(array( 8 'post_type' => array('post','media'), 9 'numberposts' => -1, 10 'tax_query' => array( 11 'relation' => 'OR', 12 array( 13 'taxonomy' => 'category', 14 'field' => 'term_id', 15 'terms' => array(2,3,4), 16 ), 17 array( 18 'taxonomy' => 'category', 19 'field' => 'term_id', 20 'terms' => array(-5,-11,-12,-13,-14), 21 ), 22 ), 23 'date_query' => array( 24 array( 25 'after' => array( 26 'year' => $postsYear, 27 'month' => 1, 28 'day' => 1, 29 ), 30 'before' => array( 31 'year' => $postsYear, 32 'month' => 12, 33 'day' => 31, 34 ), 35 'inclusive' => true, 36 ), 37 ), 38 )); 39 ?>

参考のページなどを見てやってみたのですが上手くいかず。。
アドバイス等いただけますと大変助かります。
他に必要なソースコード等ございましたらご教示いただけますと幸いです。

下記参考記事になります。
http://hirashimatakumi.com/blog/1368.html

何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

$postsYearに入っている値が2017ではなく、2016になっているのではないですか?

###追記
$postYear取得コードを以下のコードに置き換えてください。
最新記事の投稿年を取得できます。

PHP

1// 投稿タイプ'post'の記事を日付順(新しい順)に取得する 2$args = array( 'orderby'=>'date', 'order'=>'DESC', 'post_type'=>'post' ); 3$postlist = get_posts($args); 4 5// 一番新しい記事の投稿日を取得し、タイムスタンプに変換 6$date = strtotime($postlist[0]->post_date); 7 8// タイムスタンプから「年」だけを取得 9$postYear = date('Y', $date);

参考URL
テンプレートタグ/get posts - WordPress Codex 日本語版
クラスリファレンス/WP Post - WordPress Codex 日本語版
PHP: strtotime - Manual
PHP: date- Manual

投稿2017/01/06 10:37

編集2017/01/06 11:18
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hiro421

2017/01/06 10:40

ありがとうございます! $postsYear = date('Y',get_post_time()); で最新の記事の年を取得してるつもりで、 2017年の記事を投稿しているんですが、なぜか2016年の記事一覧になってしまうんです。。
退会済みユーザー

退会済みユーザー

2017/01/06 10:52

get_post()で取得している記事は「現在の記事」なので、コードを記載している「固定ページ」の投稿年である2016が$postYearに入っているのではないですか? $postYearの値を出力して確認してみてください。
hiro421

2017/01/06 11:11

なるほど。。! 固定ページの投稿年がそこに入るわけですね! 理解が乏しく申し訳ありません。。 $postYearが2016になってました。。 そうなるとこちらを最新記事の年にするのはどのように記述すればいいのでしょうか。。
hiro421

2017/01/06 11:39

ありがとうございます!!! 実現できました!! 大変助かりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問