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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1250閲覧

カスタムタクソノミーのタームをセレクトボックスに親子関係を紐付けて表示したい。

dosukoi

総合スコア7

WordPress

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/12/01 10:45

編集2017/12/02 00:09

###前提・実現したいこと
何卒お力添え頂きたく存じます m(_ _)m

カスタムタクソノミーのタームをセレクトボックスに親子関係を紐付けて表示したい。

勉強中の身ゆえ、様々のサイト様のコードを参考にして作成しておりますが、
表題の通り、タームの親と子を紐付けて表示する方法が解らず行き詰まっております・・・。

以下、画像参照ください。
■現実
イメージ説明

■中央線 (親)
○阿波座(中央線) (子)

■理想
イメージ説明

ライブラリはmaterializeを使用しています。
http://materializecss.com/forms.html#select

当方には技術不足でできませんでしたが、親タームだけを表示し、親タームを選択したら、
子タームのセレクトボックスが出現して選択できる、
といった方法でもかまいません。
他にもこういった方法はどうか?でもかまいません、どうぞ宜しくお願い致します。

言葉足らずで申し訳ございませんが何卒、お知恵お貸し頂ければと思います。
わかりづらい点ございましたらお手数ですがそちらもご指摘くださいませ。

###該当のソースコード

$placenum = $_GET['station']; if($placenum){ $taxquerysp[] = array( 'taxonomy'=>'station', 'terms'=> $placenum, 'field'=>'slug', 'operator'=>'AND' ); } <select name="station" style="margin-top:20px;" id="select" multiple=""> <option value="" selected>全路線</option> <?php $taxonomy_name = 'station'; $taxonomys = get_terms($taxonomy_name,'orderby=count&hide_empty=1&order=DESC'); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $tax_posts = get_posts(array('post_type' => get_post_type(), 'taxonomy' => $taxonomy_name, 'field' => $taxonomy->slug ) ); if($tax_posts): ?> <option value="<?php echo $taxonomy->slug; ?>"><?php echo $taxonomy->name; ?><?php $count = $taxonomy->count; ?>(<?php echo $count ?>)</option> <?php endif; endforeach; endif; ?> </select>

###試したこと

以下などを参考に試行錯誤致しました。
parentを使用する事はわかったのですが、セレクトボックスへのループ出力の為か、うまくいきませんでした。

http://webcake.no003.info/webdesign/get-terms.html
http://tipsbear.com/wordpress-taxonomy-get-terms-listing-in-order-of-parent-child/
https://blog.raizzenet.com/how-to-display-term-list-of-wp-taxonomies/
http://www.rockstream-jp.com/wordpress-term-parent/

wp_list_categoriesや、wp_dropdown_categoriesではセレクトボックスへの対応ができませんでした。

・wp_list_categories → こちらを呼び出すと一覧全てが一括で出力されてしまい個別に<option>でくくることができない為、選択肢をセレクトボックスにできませんでした。

・wp_dropdown_categories → こちらを呼び出すと、現状とほぼ同様のリスト状態にはなりますが、<select>タグが使用できず、multiple(マルチセレクトボックス)に対応できませんでした。
また、親子セット順にはなりますが、画像の理想状態のように段落の付与の仕方が分かりませんでした。親と子でclassの分ける等、細かい操作ができない為、CSSでも段差を作ることができませんでした。

上記の事から、当初のコードに書き加えたほうが、可能かと思い試行錯誤しておりました。

###補足情報(言語/FW/ツール等のバージョンなど)
http://kotori-blog.com/wordpress/refinement_search/#refinement11
こちらのサイトのコードを基盤に作成しております。
カスタムとして、ターム毎のカウント、件数昇順を書き加えています。

フレームワークはMaterializeを使用。
検索ボックスはmultiple=""を追加し、マルチセレクトボックスにしています。

'hierarchical' => true,
階層設定はtrueにしております。

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

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

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

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

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

yambejp

2017/12/01 11:55

提示されているソースが中途半端で何をやりたいのかわかりません。もう少し具体性があるソースは提示できませんか?
yambejp

2017/12/01 11:55 編集

かぶった・・・
dosukoi

2017/12/01 12:15

ご指摘ありがとうございます!該当箇所のソースはこちらで全てでございます。検索結果等はまた別にソースがございますが、そちらはまた別の箇所と思い記載いたしませんでした。 セレクトボックス部分はこちらで全てになります。どの部分が足りませんでしょうか?至ら点申し訳ございません。
kei344

2017/12/01 16:00

「wp_dropdown_categoriesではセレクトボックスへの対応ができませんでした。」とは具体的に何が問題だったのでしょうか。
dosukoi

2017/12/01 17:17

当方の記載の仕方が悪く申し訳ございません。 具体的に問題だった箇所を記載致しました。 どうぞよろしくお願い致します。 その他、ご不明点等ございましたらどうぞご指摘くださいませ。
kei344

2017/12/01 17:37

スクリーンショットに写っているものがブラウザ標準の<select>要素ではありませんね。という事は何らかのライブラリを使用する前提なのでしょうか。「parent」を利用したコードが「うまくいかない」というのはそのライブラリも関係する問題なのでは?
dosukoi

2017/12/01 17:45

申し訳ございません。補足情報に記載したのですが、文頭に書くべきでした。 ライブラリはMaterializeを使用しており、<select>をカスタムしております。 なるほど・・・、となると複数選択が難しくなりそうですね・・・。 他に方法、解決策が無いか探ってみます。 お気づきの点ございましたらアドバイス頂ければと思います。m(_ _)m
kei344

2017/12/01 17:53

それは失礼しました。プラグイン/ライブラリは公式配布サイトのURLを質問文に追記ください。(URLにはリンクを張ることができます)
dosukoi

2017/12/02 00:09

ご指摘ありがとうございます。こちらこそ、大変失礼いたしました。すべてリンクを張りましたのでご確認お願い致します。
guest

回答1

0

ベストアンサー

materialize自体に「階層のあるselect要素」を扱う方法が無い(対応していない)ので同じような見た目にするにはご自身でJavaScriptで組むことになると思います。

「親タームだけを表示し、親タームを選択したら、子タームのセレクトボックスが出現して選択できる、」を実装する場合についてもJavaScriptで組むことになるため、ちょっとのコードでどうこう出来る範囲を超えています。

その部分を外注されるか、「【中央線】」などラベル側で表現を変えるなど他の方法を考えるほうが手早いと思います。

投稿2017/12/03 14:50

kei344

総合スコア69398

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

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

dosukoi

2017/12/03 15:10

kei344様、ご回答ありがとうございます。 なるほど・・・やはり難しいですね・・・。 マルチセレクトはあきらめてセレクトボックスでどうにかできないか試しているのですが苦戦中です・・・。 一旦本件はクローズとして、自分なりに他の対処法を見つけられたら追記致します。 ご丁寧にありがとうございました。 元々検索しててterailを知ったのですが、kei344様の回答に幾度も助けられております。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問