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

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

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

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

Q&A

解決済

1回答

1847閲覧

Wordpress リンク付きプルダウンメニューの作成方法

tkm0604

総合スコア552

WordPress

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

0グッド

0クリップ

投稿2021/05/19 05:27

編集2021/05/19 05:34

参考ページ、下記リンクページの「CATEGORY」ように、リンク付きのプルダウンメニューを実装したいです。
リンク内容
イメージ説明

しかし、自分の書いたコードでは選択したターム(カテゴリー)一覧ページには移動できるのですが、「全てのページ」をクリックしても「全ての記事」一覧(news-archive.php)に移動できません。

HTML

1 <dl> 2 <dt>CATEGORY</dt> 3 <dd> 4 <?php // ターム一覧をプルダウンメニューで表示 5 $taxonomy_slug = 'news_category'; // タクソノミーのスラッグを指定 6 $terms = get_terms($taxonomy_slug); // タームの取得 7 if( $terms && !is_wp_error($terms) ){ // タームがあれば表示 8 echo '<select name="select" onChange="location.href=value;">'; // option の value 値を URL とする 9 echo '<option>全ての記事</option>'; 10 foreach ( $terms as $value ) { // 配列の繰り返し 11 echo '<option value="'.get_term_link($value->slug,$taxonomy_slug).'">'.esc_html($value->name).'</option>'; // タームのURLとタイトルを表示 12 } 13 echo '</select>'; 14 } 15 ?> 16 </dd> 17 </dl>

html

1 echo '<option>全ての記事</option>';

「全ての記事」に対して、カスタム投稿タイプ記事一覧ページのリンクをを取得すればいいのかな?と思っているのですが、その方法もわかりません。。。。

どのようにすれば、参考サイトのように、「全ての記事」を選択して「全ての記事」一覧(news-archive.php)に移動できるようになるでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

カスタム投稿タイプ記事一覧ページのリンクをを取得すればいいのかな?と思っているのですが、その方法もわかりません。。。

アーカイブ URL なら 関数リファレンス/get_term_link でどうでしょうか?

指定された(タクソノミー)タームのアーカイブページへのパーマリンクを返します。 タームが存在しないときは WP_Error オブジェクトを返します。

投稿2021/05/20 00:36

編集2021/05/20 00:37
CHERRY

総合スコア25171

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

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

tkm0604

2021/05/20 11:23 編集

コメントありがとうございます。 get_term_link の使い方などを調べたのですが、すでに下記箇所で echo '<option value="'.get_term_link($value->slug,$taxonomy_slug).'">'.esc_html($value->name).'</option>'; // タームのURLとタイトルを表示 と、get_term_linkを使用しております。 echo '<option>全ての記事</option>'; の箇所にタームのアーカイブページへのパーマリンクを返したいです。 もう少しヒントを頂けないでしょうか?
tkm0604

2021/05/20 13:14

ありがとうございました!! 頂いた回答を元にもう一度頭の中を整理することができました。 「全ての記事」はループで取得するのではなく、ループ外にあらかじめ設置しておいて、タームだけをループで取得する方法で思い通りの動作を実現できました!! <select onChange="location.href=value;"> <option hidden>全ての記事</option> <option value="<?php echo esc_url(home_url('/news-archive')); ?>">全ての記事</option> <?php $taxonomy_slug = 'news_category'; // タクソノミーのスラッグを指定 $terms = get_terms($taxonomy_slug); // タームの取得 if( $terms && !is_wp_error($terms) ){ // タームがあれば表示 foreach ( $terms as $value ) { // 配列の繰り返し echo '<option value="'.get_term_link($value->slug,$taxonomy_slug).'">'.esc_html($value->name).'</option>'; // タームのURLとタイトルを表示 } } ?> </select>
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問