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

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

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

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

PHP

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

Q&A

解決済

2回答

2270閲覧

ターム一覧の親タームに子タームがある場合とない場合の条件分岐をさせたい

yesma

総合スコア16

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/09/09 06:56

固定ページにカスタム投稿のターム一覧をサイドバーに表示させています。

やりたい事
親タームに子タームがある場合とない場合の条件分岐をして出力する内容(クラス名など)を変えたいです。

試した事
親タームがループする箇所にget_term_childrenを追加してif文で条件を追加しました。
結果は全てがtrueになってしまい、うまくいきませんでした。
これは書き方が間違っているのでしょうか?
まだ不足しているコードがあるのですかね??

コードはサイドバーの全体のコードと、該当のコードを抜粋したものを貼ります。
ご教授お願いします。

不足している情報などありましたらご連絡おねがいします。

サイドバーの全体

php

1<div class="co_archive_sidebar client_floating"> 2 <div> 3 <h3>カテゴリー</h3> 4 <?php 5 $my_tax = 'client_type'; //取得したいタクソノミー名 6 $parent_terms = get_terms( $my_tax, array('hide_empty' => true, 'parent' => 0) ); //第一階層のタームだけ取得 7 if ( !empty( $parent_terms ) ) : 8 echo '<ul>'; 9 10 //第1ループ 11 foreach ( $parent_terms as $pt ) : 12 $pt_id = $pt->term_id; 13 $pt_name = $pt->name; 14 $pt_slug = $pt->slug; 15 $pt_url = get_term_link($pt); 16 ?> 17 <li 18 <?php 19 $check = get_term_children($pt_id, $pt_name); 20 if(!empty($check)){ 21 echo 'class="parent child_cate'. $pt_slug . '">'; 22 echo '<a '.'href="'. 'javascript:void(0);'.'"'; 23 }else{ 24 echo '<a '.'class="parent child_cate'. $pt_slug . '">'.'<a '; 25 echo 'href="#'.$pt_slug.'"'; 26 } 27 ?> 28 ><?php echo $pt_name; ?></a> 29 <?php 30 $child_terms = get_terms( $my_tax, array('hide_empty' => true, 'parent' => $pt_id) ); 31 if ( !empty( $child_terms ) ) : 32 echo '<ul class="child">'; 33 34 //第2ループ 35 foreach ( $child_terms as $ct ) : 36 $ct_id = $ct->term_id; 37 $ct_name = $ct->name; 38 $ct_slug = $ct->slug; 39 $ct_url = get_term_link($ct); 40 ?> 41 <li> 42 <a href="#<?php echo $ct_slug; ?>"><?php echo $ct_name; ?></a> 43 </li> 44 <?php 45 endforeach; //End : 第2ループ 46 echo '</ul>'; 47 endif; 48 ?> 49 </li> 50 <?php 51 endforeach; //End : 第1ループ 52 echo '</ul>'; 53 endif; 54 ?> 55 </div> 56 </div>

抜粋したコード

php

1<li 2 <?php 3 $check = get_term_children($pt_id, $pt_name); 4 if(!empty($check)){ 5 echo 'class="parent child_cate'. $pt_slug . '">'; 6 echo '<a '.'href="'. 'javascript:void(0);'.'"'; 7 }else{ 8 echo '<a '.'class="parent child_cate'. $pt_slug . '">'.'<a '; 9 echo 'href="#'.$pt_slug.'"'; 10 } 11 ?> 12 >

以上になります。

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

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

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

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

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

guest

回答2

0

ベストアンサー

PHP

1// $check = get_term_children($pt_id, $pt_name); 2// ↓ 3 $check = get_term_children($pt_id, $my_tax);

【get_term_children() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_term_children/

get_term_children( int $term_id, string $taxonomy )

投稿2021/09/09 08:21

kei344

総合スコア69458

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

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

yesma

2021/09/09 08:52

ありがとうございます。 ご指摘の箇所を修正しましたら動作しました。 get_term_children( int $term_id, string $taxonomy ) こちらタクソノミー指定と書かれていましたね・・・確認不足でした!すみません。
guest

0

get_term_childrenのタクソノミーが存在しない場合の戻り値はWP_Error となります。
判定はis_wp_errorでするといいでしょう。

参考
https://developer.wordpress.org/reference/functions/get_term_children/

投稿2021/09/09 08:01

gogoweb_ikeda

総合スコア1426

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

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

yesma

2021/09/09 08:54

回答ありがとうございます。 すみません。試してみたのですが、うまく調節ができず動作した回答をベストアンサーしました。 お時間いただいのに申し訳ありません。 こちらの資料も確認しておきます! ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問