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

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

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

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

PHP

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

Q&A

2回答

1478閲覧

Wordpress ターム一覧ページを投稿日付順に並べ替えたい

siroyama

総合スコア17

WordPress

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

PHP

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

0グッド

1クリップ

投稿2019/02/19 05:12

編集2019/02/22 13:23

前提・実現したいこと

Wordpressで各ターム一覧を表示させるページを作成しています。
現在は、各ターム作成順(古いほうが上)に並んでおります。

各タームを選択した最新記事の日付順に並び替えを行いたいのですがうまくいきません。

<現在>
ターム:メロンパン
最新記事投稿日 2月1日

ターム:クロワッサン
ターム作成:メロンパンのあと
最新記事投稿日 2月2日

<実現したい表示>
ターム:クロワッサン
ターム作成:メロンパンのあと
最新記事投稿日 2月2日

ターム:メロンパン
最新記事投稿日 2月1日

該当のソースコード

<?php $postTypeName = 'report';//投稿タイプの名前 $taxonomy = 'cat_report';//タクソノミー名 $num = 1;//表示する投稿の数 -1で全部 $terms = get_terms($taxonomy); foreach ( $terms as $term ){ $args = array( 'posts_per_page' => $num, 'post_type' => $postTypeName, 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $term->slug, ) ) ); $myPost = get_posts($args); if($myPost): foreach($myPost as $post) : setup_postdata( $post ); ?> <li> <?php $days = 7; //Newを表示させたい期間の日数 $kiji_title = $post->post_title; $today = date_i18n('U'); $entry = get_the_time('U'); $kiji = date('U',($today - $entry)) / 86400 ; if( $days > $kiji ){ echo '<div class="new">NEW</div>'; } ?> <a href="<?php the_permalink(); ?>" class="opacity"> <?php if (has_post_thumbnail()) { the_post_thumbnail('newsImg'); } else { ?> <img src="<?php bloginfo('template_directory'); ?>/images/sample5.jpg" alt="" /> <?php } ?> <p class="ti"><?php the_title(); ?></p> <p><?php the_excerpt(); ?></p> <p class="day"><?php the_time('Y.m.d') ?><span>|<?php $terms = get_the_terms($post->ID, 'cat_report'); $t_slug=''; foreach($terms as $term){ $term_name = $term->name; $t_slug = $t_slug.$term_name.','; }; $t_slug = substr($t_slug, 0, -1); echo $t_slug; ?></span></p> </a> </li> <? endforeach; endif; wp_reset_postdata(); } ?>

試したこと

foreach ( $terms as $term ){ $args = array( 'posts_per_page' => $num, 'post_type' => $postTypeName, 'orderby' => 'date', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $term->slug, ) ) );

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

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

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

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

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

guest

回答2

0

テンプレートタグ/get posts - WordPress Codex 日本語版
orderbyとかorderを使うっぽい?

$args = array( 'posts_per_page' => $num, 'post_type' => $postTypeName, 'tax_query' => array( array( 'taxonomy' => $taxonomy, 'field' => 'slug', 'terms' => $term->slug, ) ), 'orderby' => 'date', 'order' => 'DESC', );

投稿2019/02/19 05:16

編集2019/02/19 05:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

siroyama

2019/02/20 01:47

ありがとうございます。 こちら試してみたのですがうまくいきませんでした。
退会済みユーザー

退会済みユーザー

2019/02/20 02:18

うまくいかないでは現状がわかりません、具体的にどうなのですか?
siroyama

2019/02/20 06:51

すいません、具体的には、上記コードを変更してみましたが、 結果、表示順は変わらず変化がありませんでした。
guest

0

質問文のコードでは、get_terms関数で取得したタームの順でget_posts関数を繰り返し実行しています。

そのため、タームの順にもとづいて記事が表示されています。

今回のケースでは、

(1)各タームの最新記事を取得
(2)取得した記事群をその日付にもとづき並び替える

のような手順を踏む必要があるものと思います。

ちなみに、質問文から読み取りあぐねているのですが、

記事A(投稿日 2月1日、メロンパン)
記事B(投稿日 2月2日、メロンパン)
記事C(投稿日 2月3日、クロワッサン)

とあった場合、想定している表示は

記事C
記事B
(記事Aは表示しない)

でしょうか?

投稿2019/02/22 08:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

siroyama

2019/02/22 13:25

すいません、書いているつもりで記載されておりませんでした。 想定している表示は 記事C 記事B (記事Aは表示しない)で合っています。
退会済みユーザー

退会済みユーザー

2019/02/22 22:37

であれば、提示した手順で実装可能だと思います。 (1)各タームの最新記事を取得をget_posts関数で実施、(2)取得した記事群をその日付にもとづき並び替えをarray_multisort関数等でおこなう方針で実装されてみてはいかがでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問