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

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

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

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

PHP

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

Q&A

解決済

1回答

1356閲覧

ターム一覧の特定のタームのみ表示する内容を変えたい

yesma

総合スコア16

WordPress

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

PHP

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

0グッド

0クリップ

投稿2021/08/15 03:26

編集2021/08/15 03:28

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

特定の親タームを指定してリンクに表示させる内容を変更したいと思い、色々試して見たのですが、
うまくできず、お力を借りれたらと思い質問します。

やりたい事
ターム一覧にある特定のタームのみaタグのリンクをjavascript:void(0);にして、
それ以外はタームのスラッグが出るようにしたいです。

ターム名・・・・POP
タームスラッグ・・・・cate05

タクソノミー名・・・・client_type

試した事
特定のタームの有無をチェックができる[term exists]を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 class="parent <?php echo $pt_slug; ?>"> 18 <?php 19                                              echo '<a '; 20                                               if ( is_array( term_exists( 'POP', 'client_type' ) ) ){ 21                                              echo 'href="'. 'javascript:void(0);'.'"'; 22                                               }else{ 23                                              echo 'href="#'.$pt_slug.'"'; 24                                                   }  25                                                   ?> 26 ><?php echo $pt_name; ?></a> 27 <?php 28 $child_terms = get_terms( $my_tax, array('hide_empty' => true, 'parent' => $pt_id) ); 29 if ( !empty( $child_terms ) ) : 30 echo '<ul class="child">'; 31 32 //第2ループ 33 foreach ( $child_terms as $ct ) : 34 $ct_id = $ct->term_id; 35 $ct_name = $ct->name; 36 $ct_slug = $ct->slug; 37 $ct_url = get_term_link($ct); 38 ?> 39 <li> 40 <a href="#<?php echo $ct_slug; ?>"><?php echo $ct_name; ?></a> 41 </li> 42 <?php 43 endforeach; //End : 第2ループ 44 echo '</ul>'; 45 endif; 46 ?> 47 </li> 48 <?php 49 endforeach; //End : 第1ループ 50 echo '</ul>'; 51 endif; 52 ?> 53 </div> 54 </div>

php

1//抜粋したコード 2<?php 3 echo '<a '; 4 if ( is_array( term_exists( 'POP', 'client_type' ) ) ){ 5 echo 'href="'. 'javascript:void(0);'.'"'; 6 }else{ 7 echo 'href="#'.$pt_slug.'"'; 8 } 9 ?>

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

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

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

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

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

guest

回答1

0

ベストアンサー

term_exists は WordPress内に特定のタームが存在するか、存在する場合ターム情報の連想配列を返す関数です。
なのでこのifは、登録しているタームについて確認すれば必ずtrueになります。

単純に slug が 特定のタームかどうかを確認すればよいのでは。

PHP

1// if ( is_array( term_exists( 'POP', 'client_type' ) ) ) 2// ↓ 3 if ( $pt->slug === 'cate05' )

【term_exists – WordPress私的マニュアル】
https://elearn.jp/wpman/function/term_exists.html

投稿2021/08/15 05:33

kei344

総合スコア69625

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

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

yesma

2021/08/15 07:28

ご回答ありがとうございます! 解説までしていただき、ご丁寧にありがとうございます。 やはり認識が間違っていたのですね。 再度確認します。 回答いただいたコードを試したところ、解決しました。 関数でなんとかしようという頭でいたので、比較演算子という選択が出てきませんでした・・・ とても勉強になりました。 ベストアンサーとさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問