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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1587閲覧

全ての記事の中から、最新の更新した記事n件にNewを表示させたい

yagasaki

総合スコア10

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/06/13 08:46

編集2016/06/13 10:17

WordPressで、全ての記事の中から、最新の更新した記事n件にNewを表示させたいです。

一覧ではなく個別記事にNEWと表示させたいです。

以下サイト参考にやってみたのですが、最新記事順であれば表示できるのですが、
更新した記事順でNEW表示させることができず困っています。

参考サイト
http://wp3.jp/2011/12/25/wordpress-new/

php

1<?php 2$last_post_ids = array(); 3$lastposts = get_posts('posts_per_page=5&orderby=modified'); 4foreach($lastposts as $lastpost) { 5$last_post_ids[] = $lastpost->ID; 6} 7?> 8<?php if ( in_array( $post->ID, $last_post_ids ) ) : ?>New<?php endif; ?>

▲ orderby=modifiedを足して書いてみましたが、、

どのように書けばよいでしょうか。。
お力お貸しいただけますと幸いです。

追記しました。

前後ですが、余分なコードをすべて消した
以下のようなsingle.phpでも結果は同じです。。

php

1<?php 2get_header(); 3?> 4 5<?php while ( have_posts() ) : the_post(); ?> 6<?php 7$last_post_ids = array(); 8$lastposts = get_posts('posts_per_page=5&orderby=modified'); 9foreach($lastposts as $lastpost) { 10$last_post_ids[] = $lastpost->ID; 11} 12?> 13<?php if ( in_array( $post->ID, $last_post_ids ) ) : ?>New<?php endif; ?> 14<?php endwhile; ?> 15 16<?php get_footer(); ?> 17

orderby=modifiedを除けば、投稿順での新着になら動作するのですが、、
コード自体には問題ないとのことなのですが、
他に何か考えられる原因はござますでしょうか。。

お手数おかけして申し訳ございません。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/06/13 09:02

「更新した記事順でNEW表示させることができず」というのは具体的にどういう状態なのでしょうか。 NEWが表示されるのが更新順ではなく投稿順で5件なのか、更新順で5件つくが記事の表示順を更新順にするとNEWがつかなくなるのか、そもそも更新順に記事を表示できないのか・・・質問文ではどうしたいのかが判別できません。
yagasaki

2016/06/13 09:23

ご説明不足で申し訳ございません。。 現在、すべての記事一覧ページでは更新順で記事を表示させています。 目的としては、更新順で並んでいるトップ新着5件の個別記事ページで「NEW」アイコンを表示させたいと思っております。
退会済みユーザー

退会済みユーザー

2016/06/13 09:33

返答ありがとうございます。 質問文のコードを個別記事のテンプレートに入れても動作しないということでしょうか? コード自体には問題が見当たらないのでもう少し前後も追記していただければと思います。
yagasaki

2016/06/13 10:19

はい。その通りでございます。single.phpに入れても動作しないのですが、、 追記しましたのでご確認いただけますと幸いです。
nnssn

2016/06/13 13:35

endwhile;の上あたりに var_dump($post->ID, $last_post_ids); を追加すると表示はどうなりますか?本当なら記事idの後に、更新順新着5件のidが出てきてほしいところですけど...
guest

回答1

0

ベストアンサー

テーマTwenty_Sixteenで試してみましたが手元の環境では動作しているようなので・・・
まず一覧、個別共に

php

1$last_post_ids = array(); 2$lastposts = get_posts('posts_per_page=5&orderby=modified'); 3foreach($lastposts as $lastpost) { 4$last_post_ids[] = $lastpost->ID; 5} 6var_dump($last_post_ids);

としてみて、$last_post_idsが両方共同じ内容が取得できているか確認してみてください。
また一覧ページでページングを行っている場合は1ページ目と2ページ目も比較してみてください。
ここで値が異なるようなら'posts_per_page=5&orderby=modified'で指定している以外のパラメータ(省略時の初期値)が原因な気がするので'posts_per_page=5&orderby=modified&offset=0'を試して見てください。

投稿2016/06/13 13:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yagasaki

2016/06/13 14:18

ご教示いただきました通りに、一覧・個別共、値を比較しましたが合わず、、初期値を省略せずにやってみても合わず、、これはプラグインだ。と思いクライアント環境に元から入っていた「Intuitive Custom Post Order」というプラグインを停止したら正常に動きました...。 この度は本当にありがとうございました。お手数おかけして申し訳ございません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問