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

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

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

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

PHP

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

Q&A

解決済

1回答

6438閲覧

WordPressの子ターム、孫タームを階層別に表示する方法について

murama2

総合スコア113

WordPress

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

PHP

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

0グッド

1クリップ

投稿2018/11/02 07:36

WordPressのタームにて、下記のようなタームを作成し、各親タームを除いた子と孫のタームだけを階層を維持した状態で取得したいのですが、孫と子すべて同じ扱いで取得したしまい階層別にというのがうまくいかない状態です。

【親タームA】
L子タームA
L孫タームA
L孫タームA2
L子タームB
L孫タームB

【親タームB】
L子タームA
L孫タームA
L孫タームA2
L子タームB
L孫タームB

出力に使用しているコードは下記の通りです。

■taxonomy-booktype.php

検証用 <?php $taxonomy = 'booktype'; //タクソノミー名 $args = array( 'pad_counts' => true, 'hide_empty' => 0, 'parent' => 0 ); $terms = get_terms( $taxonomy , $args ); ?> <?php $term_object = get_queried_object(); $term_id = $term_object->term_id; $termchildren = get_term_children( $term_id, $taxonomy ); foreach ( $termchildren as $child ): //その中で子タームを回す $termC = get_term_by( 'id' , $child, $taxonomy ); //if( $termC->count != 0 ):?> <h2 style="font-size:16px;margin:10px 0;"><?php echo $termC->name; ?></h2> <?php $grandson_id = $termchildren->term_id; $grandsons = get_term_children( $grandson_id, $taxonomy ); foreach ( $grandsons as $grandson ): //その中で子タームを回す ?> <p style="font-size:12px;margin-bottbom: 10px;margin-left:40px;"><?php echo $termC->name; ?></p> <?php //endif; endforeach; endforeach; ?>

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

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

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

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

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

guest

回答1

0

自己解決

下記コードで実装できました。

<?php // WordPress タームの親・子・孫の一覧に孫タームの投稿一覧を表示する方法 $taxonomy_slug = 'booktype'; // タクソノミースラッグを指定 $post_type_slug = 'book'; // ポストタイプの指定 $parents = get_terms($taxonomy_slug,'parent=0&hide_empty=0&include='.$term_object->term_id); // 親のいないタームを取り出します、つまり親 foreach ( $parents as $parent ) { // 親タームのループを開始 echo '<h2>' . esc_html($parent->name) . '</h2>'; // 親タームのタイトルを表示 $children = get_terms($taxonomy_slug,'hierarchical=0&hide_empty=0&parent='.$parent->term_id); foreach ( $children as $child ) { // 子タームのループを開始 echo '<h3 style="margin-left:25px;color:red;">' . esc_html($child->name) . '</h3>'; // 子タームのタイトルを表示 $grands = get_terms($taxonomy_slug,'hierarchical=0&hide_empty=0&parent='.$child->term_id); foreach ( $grands as $grandson ) { // 子タームのループを開始 echo '<h4 style="margin-left:35px;color:blue;">' . esc_html($grandson->name) . '</h4>'; // 孫タームのタイトルを表示 $grandchildren = get_terms($taxonomy_slug,'hierarchical=0&hide_empty=0&parent='.$grandson->term_id); foreach ( $grandchildren as $grandchild ) { // 子タームのループを開始 echo '<h5 style="margin-left:50px;color:green;">' . esc_html($grandchild->name) . '</h5>'; // 孫タームのタイトルを表示 ?> <?php } // ひ孫ターム終了 ?> <?php } // 孫ターム終了 ?> <?php } // 子ターム終了 ?> <?php } // 親ターム終了 ?>

投稿2018/11/02 08:02

murama2

総合スコア113

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問