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

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

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

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

PHP

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

Q&A

解決済

2回答

3475閲覧

WordPressのカスタム投稿で親カテゴリとサブカテゴリのリストを表示させたい

yukabyo

総合スコア135

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/03/15 00:52

WordPressのカスタム投稿の
アーカイブページと、タクソノミーページにて、
親カテゴリ(ターム)とサブカテゴリをphpで一覧表示させたいです。

最終的に出力させたいのは、以下のような形です。

php

1<div class="works_cat"> 2 <ul class="menulist clearfix" id="works-menu"> 3 <li class="menu"> 4 <div class="button"> 5 <a href=""> 6 <dl> 7 <dt>親カテゴリ名1のラベル</dt> 8 <dd>親カテゴリ名1のスラッグ</dd> 9 </dl> 10 </a> 11 </div> 12 <ul> 13 <li><a href="">親カテゴリ名1のサブカテゴリ1</a></li> 14 <li><a href="">親カテゴリ名1のサブカテゴリ2</a></li> 15 </ul> 16 </li> 17 <li class="menu"> 18 <div class="button"> 19 <a href=""> 20 <dl> 21 <dt>親カテゴリ名2のラベル</dt> 22 <dd>親カテゴリ名2のスラッグ</dd> 23 </dl> 24 </a> 25 </div> 26 <ul> 27 <li><a href="">親カテゴリ名2のサブカテゴリ1</a></li> 28 <li><a href="">親カテゴリ名2のサブカテゴリ2</a></li> 29 </ul> 30 </li> 31 <li class="menu"> 32 <div class="button"> 33 <a href=""> 34 <dl> 35 <dt>親カテゴリ名3のラベル</dt> 36 <dd>親カテゴリ名3のスラッグ</dd> 37 </dl> 38 </a> 39 </div> 40 <ul> 41 <li><a href="">親カテゴリ名3のサブカテゴリ1</a></li> 42 <li><a href="">親カテゴリ名3のサブカテゴリ2</a></li> 43 </ul> 44 </li> 45 </ul> 46</div>

今回以下のように途中までやってみましたがうまくいかず、
親カテゴリとサブカテゴリの出力の仕方がわからず躓いています。
わかる方いましたら教えていただけないでしょうか。
よろしくお願いいたします。

php

1<div class="works_cat"> 2 <ul class="menulist clearfix" id="works-menu"> 3 <?php 4 $args = array( 5 'hide_empty' => 0, //記事の無いカテゴリも表示 6 ); 7 $taxonomy_name = 'works-cat'; 8 $taxonomys = get_terms($taxonomy_name,$args); 9 if(!is_wp_error($taxonomys) && count($taxonomys)): 10 foreach($taxonomys as $taxonomy): 11 $url = get_term_link($taxonomy->slug, $taxonomy_name); 12 ?> 13 <li class="menu"> 14 <div class="button"> 15 <a href="<?php echo $url; ?>"> 16 <dl> 17 <dt><?php echo esc_html($taxonomy->name); ?></dt> 18 <dd><?php echo esc_html($taxonomy->slug); ?></dd> 19 </dl> 20 </a> 21 </div> 22 <ul> 23 <li><a href="">サブカテゴリ名</a></li> 24 <li><a href="">サブカテゴリ名</a></li> 25 </ul> 26 </li> 27 <?php endforeach; endif; ?> 28 </ul> 29</div>

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

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

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

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

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

guest

回答2

0

自己解決

php

1<div class="works_cat"> 2<?php 3// カスタム分類名 4$taxonomy = 'works-cat'; 5 6// パラメータ 7$args = array( 8 // 親タームのみ取得 9 'parent' => 0, 10 11 // 子タームの投稿数を親タームに含める 12 'pad_counts' => true, 13 14 'orderby' => 'term_order', 15 16 // 投稿記事がないタームも取得 17 'hide_empty' => false 18); 19 20// カスタム分類のタームのリストを取得 21$terms = get_terms( $taxonomy , $args ); 22 23if ( count( $terms ) != 0 ) { 24 echo '<ul class="menulist clearfix" id="works-menu">'; 25 26 // 親タームのリスト $terms を $term に格納してループ 27 foreach ( $terms as $term ) { 28 29 // 親タームのURLを取得 30 $term = sanitize_term( $term, $taxonomy ); 31 $term_link = get_term_link( $term, $taxonomy ); 32 if ( is_wp_error( $term_link ) ) { 33 continue; 34 } 35 36 // 親タームのURLと名称とカウントを出力 37 echo '<li class="menu"><div class="button"><a href="javascript:void(0)"> 38 <dl> 39 <dt>' . $term->name . '</dt> 40 <dd>' . $term->slug . '</dd> 41 </dl></a></div>'; 42 43 // 子タームのIDのリストを取得 44 $term_children = get_term_children( $term->term_id, $taxonomy ); 45 46 if( count( $term_children ) != 0 ) { 47 echo '<ul>'; 48 // 子タームのIDのリスト $term_children を $term_idに格納してループ 49 foreach ( $term_children as $term_id ) { 50 51 // 子タームのIDを元に子タームの情報を取得 52 $term_child = get_term_by( 'id', $term_id, $taxonomy ); 53 54 // 子タームのURLを取得 55 $term_child = sanitize_term( $term_child, $taxonomy ); 56 $term_child_link = get_term_link( $term_child, $taxonomy ); 57 if ( is_wp_error( $term_child_link ) ) { 58 continue; 59 } 60 61 // 子タームのURLと名称とカウントを出力 62 echo '<li><a href="' . esc_url( $term_child_link ) . '">' . $term_child->name . '</a></li>'; 63 } 64 echo '</ul></li>'; 65 } 66 } 67 68 echo '</ul>'; 69} 70?> 71</div> 72 73 74

投稿2017/03/15 02:22

yukabyo

総合スコア135

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

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

0

この辺の記事を応用できませんか?

【WordPressでwp_list_categoriesを使わずにカスタムタクソノミー (カスタム分類) のターム一覧を表示する – WebCake】
http://webcake.no003.info/webdesign/get-terms.html

投稿2017/03/15 02:20

kei344

総合スコア69364

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

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

yukabyo

2017/03/15 02:24

ご回答ありがとうございます! 奇遇ながら私もちょうどその記事の内容を読んでおり、実現することができましたm(__)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問