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

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

ただいまの
回答率

90.37%

  • WordPress

    9408questions

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

タームを「そのタームに属する記事の最新更新日」順で表示したい

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 769

yuri_san

score 2

実現したいこと

はじめてのご質問です。よろしくお願いたします。
現在、WordPressでタクソノミーのタームを、
「そのタームに属する記事の最新更新日」順で
表示したいのですがどのような方法を取ればよいか悩んでおります。。

作品1、作品2、作品3、、、、などのタームがあり、
作品2に属する記事が新しく投稿されると
・作品2(最終更新日:2017/4/2 13:00)
・作品1(最終更新日:2017/4/2 10:00)
・作品3(最終更新日:2017/4/1 9:00)
のような順番で表示したいと考えています(伝わりますでしょうか…?)

下記のソースコードまでは自分でなんとか、
array_multisort関数を使いソート出来たのですが、
この先どう出力したらよいかがイメージ出来ていません。

初心者のコードで、ツッコミ所だらけなのかと思いますが、
お詳しい方いらっしゃいましたらアドバイスをいただけますと幸いです。

ソースコード

<?php
  $wp_term_query_args = array(
    'taxonomy' => 'sakuhin',
    'orderby' => 'name',
    'order' => 'ASC',
    'hide_empty' => true
  );
  $the_query = new WP_Term_Query($wp_term_query_args);
  foreach($the_query->get_terms() as $term){
    $term_link = get_term_link($term->slug,'sakuhin');

    $get_posts_args = array(
      'post_type' => 'page',
      'posts_per_page' => 1,
      'orderby' => 'date',
      'order' => 'DESC',
      'tax_query' => array(
        array(
          'taxonomy' => 'sakuhin',
          'field' => 'term_id',
          'terms' => $term->term_id
        )
      )
    );
    $domestic_post = get_posts($get_posts_args);

    if($domestic_post) : foreach($domestic_post as $post) : setup_postdata( $post );
      $time = $post->post_date; //作品内の最新公開日時を変数に代入
    endforeach;
    else : ?>
      <p>エラー。表示する記事がありません。</p>
    <?php endif; wp_reset_postdata();

    // 最新公開日時を配列に代入
    $arr_data[] = array('ID'=>$term->term_id, 'name'=>$term->name, 'updated'=>$time);

    // 公開日時で作品をソート
    foreach($arr_data as $key => $val){
      $updated[$key] = $val["updated"];
    }
    array_multisort($updated, SORT_DESC, $arr_data);

  };
?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 90.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • WordPress

    9408questions

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