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

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

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

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

PHP

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

Q&A

解決済

1回答

2541閲覧

親タームに属する投稿をすべて一覧で表示してるページにリンクさせたい

mamamamamama

総合スコア25

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/11/08 01:53

編集2018/11/09 01:47

前提・実現したいこと

過去に質問させていただきました件(https://teratail.com/questions/155755)に関連して質問があり投稿いたしました。
上記過去の質問で子ターム一覧を表示し、それぞれの子タームページへリンクすることができました。その節はありがとうございました。
その子ターム一覧に追加して、「すべてを見る」というリンクを作成したいと思っております。このリンクは、親タームに属する投稿をすべて一覧で表示してるページにリンクさせたいです。
どのようにしてリンクさせた良いか知恵をお貸しください!

発生している問題・エラーメッセージ

とんちんかんな記述だと思いますが、単純に下記のコードでは表示されないのですね...

該当のソースコード

◆追記(前回質問で解決したコード)

<?php $target_post = 'カスタム投稿名'; $target_post_cat = 'タクソノミー名'; $post_count = -1; $cat_args = array( 'parent' => 0, //トップレベルのタームのみ 'hierarchical' => 0, //子タームを含めない 'hide_empty' => 0 ,//全部出す 'pad_counts' => 1 ); $cats = get_terms($target_post_cat, $cat_args); foreach ($cats as $cat): ?> <?php $target_cat_name = esc_html($cat->name);//親カテゴリ名 $target_cat_slug = esc_html($cat->slug);//親カテゴリスラッグ ?> <li class="dropdown cf"> <p id="<?php echo $target_cat_slug; //親カテゴリスラッグ?>"><i class="fas fa-angle-double-down"></i><?php echo $target_cat_name;//親カテゴリ名 ?></p> <?php $child_cats = get_terms($target_post_cat, 'hierarchical=0&hide_empty=0&parent=' . $cat->term_id ); ?> <?php if ($child_cats) : ?> <ul class="child-ul"> <?php foreach ($child_cats as $child_cat): ?> <?php $child_cat_name = esc_html($child_cat->name);//子カテゴリ名 $target_cat_slug = esc_html($child_cat->slug);//子カテゴリスラッグ ?> <li><a href="<?php echo get_term_link( $child_cat ); ?>"><?php echo $child_cat_name; //子カテゴリ名?></a><?php echo $child_cat_name; //子カテゴリ名?></a></li> <?php $args = array( 'post_type' => array($target_post), 'taxonomy' => $target_post_cat, 'term' => $target_cat_slug, 'post_status' => 'publish', 'posts_per_page' => $post_count, // 表示するページ数 'orderby' => 'menu_order', //'order' => 'DESC' // 並び順 ); $my_query = new WP_Query($args); ?> <?php wp_reset_postdata(); ?> <?php endforeach; ?> </ul></li> <?php endif; ?> <?php endforeach; ?>

上記コードの最後endforeachのあとに<p><a href="<?php echo get_term_link( $cat ); ?>">全てをみる</a></p>
と書いてみましたが、最後にリスト表示されている子ターム一覧へのリンクになってしまいました。書く位置が問題ですかね?

◆追記2
質問の意味が分かりにくかったかもしれないので追記いたします!「子ターム毎に全て」を表示するのではなく、「親ターム以下の投稿全てを表示した一覧ページ」へリンクしたいという意味でした。言い回しが難しい...伝わりましたでしょうか...

<?php $target_post = 'カスタム投稿名'; $target_post_cat = '親ターム'; $post_count = -1; $cat_args = array( 'parent' => 0, //トップレベルのタームのみ 'hierarchical' => 0, //子タームを含めない 'hide_empty' => 0 ,//全部出す 'pad_counts' => 1, 'orderby' => 'id' ); $cats = get_terms($target_post_cat, $cat_args); foreach ($cats as $cat): ?> <?php $target_cat_name = esc_html($cat->name);//親カテゴリ名 $target_cat_slug = esc_html($cat->slug);//親カテゴリスラッグ ?> <li class="dropdown cf"> <p id="<?php echo $target_cat_slug; //親カテゴリスラッグ?>"><i class="fas fa-angle-double-down"></i><?php echo $target_cat_name;//親カテゴリ名 ?></p> <?php $child_cats = get_terms($target_post_cat, 'hierarchical=0&hide_empty=0&parent=' . $cat->term_id ); ?> <?php if ($child_cats) : ?> <ul class="child-ul"> <?php foreach ($child_cats as $child_cat): ?> <?php $child_cat_name = esc_html($child_cat->name);//子カテゴリ名 $target_cat_slug = esc_html($child_cat->slug);//子カテゴリスラッグ ?> <li><a href="<?php echo get_term_link( $child_cat ); ?>"><?php echo $child_cat_name; //子カテゴリ名?></a></li> <?php $args = array( 'post_type' => array($target_post), 'taxonomy' => $target_post_cat, 'term' => $target_cat_slug, 'post_status' => 'publish', 'posts_per_page' => $post_count // 表示するページ数 ); $my_query = new WP_Query($args); ?> <?php wp_reset_postdata(); ?> <?php endforeach; ?> </ul></li> <?php endif; ?> <p><a href="<?php echo get_term_link( $cat ); ?>">全てをみる</a></p> <?php endforeach; ?>```

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

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

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

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

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

marlboro_tata

2018/11/08 02:02

前回のコードのままということなら <?php echo get_term_link( $cat ); ?> これでできそうな気もしないでも?(あやふやすぎるので回答には書けません)前後のソースコードも記載する方が正確な回答が得られそうです。
guest

回答1

0

ベストアンサー

PHP

1<p><a href="<?php echo get_term_link( $cat ); ?>">全てをみる</a></p>

こちらを、最終行の<?php endforeach; ?>の前に記述すれば大丈夫だと思います。

###2018.11.9 10:24 追記
私の環境での表示結果を画像で載せておきます。
![イイメージ説明(7ab5cd0120f82707372c1fb0c8097515.png)

こういうことではない〜という場合は、お手数ですが、質問に追記をお願いいたします。

投稿2018/11/08 03:16

編集2018/11/09 01:28
marlboro_tata

総合スコア525

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

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

mamamamamama

2018/11/09 01:06

最終行の<?php endforeach; ?>の前に回答いただきましたコードを追加したのですが、各子タームの後に(子タームの数だけ)ループで表示されてしまいました。子ターム一覧が並んでいて、最後に「すべてを見る」を表示させたいのですが、難しいでしょうか?
marlboro_tata

2018/11/09 01:24

私の持っているWP環境で試してみたんですが、親タームの数分だけ、「全てをみる」のリンクが表示される結果になっています。 状況を正確に知るためにも、お手数ですが、もう一度該当のコードに「全てをみる」のリンクを追加した状態で、記載いただけますでしょうか? 不躾な推測だけを述べておきますと、「子タームの数だけ「全てをみる」のリンクが表示されている」という状況であれば、子タームのループの終わりを示す<?php endforeach; ?>の前に、全てを見るのリンクを追加したのでは・・・?
mamamamamama

2018/11/09 01:36

実際に検証いただきありがとうございます!質問本文に追記2としてコードを掲載しました¡
marlboro_tata

2018/11/09 01:47

ありがとうございます。追記2のコードも試しましたが、10:24に回答本文に追記したものとほぼ変わらない表示を得られています。 実現したことが、画像にあるような感じではない、ということでしたでしょうか?
marlboro_tata

2018/11/09 01:52

多大に勘違いしていたかもしれない、、、、 「親ターム以下の投稿全てを表示した一覧ページ」というのは、つまり、カスタム投稿のアーカイブページって理解で良いですかね? それなら。最終行の<?php endforeach; ?>「外に」下記を追加で、どうでしょう? <p><a href="<?php echo get_post_type_archive_link( $target_post ); ?>">全てをみる</a></p> https://wpdocs.osdn.jp/関数リファレンス/get_post_type_archive_link
mamamamamama

2018/11/09 01:52

さらに追記させていただきました、「「子ターム毎に全て」を表示するのではなく、「親ターム以下の投稿全てを表示した一覧ページ」へリンクしたいという意味でした。」という内容を実現したく質問させていただいておりました!分かりにくくてすみません。追記2のコードでいいますと「$target_post_cat = '親ターム';」以下の全ての投稿をみれるページという意味合いでした!
marlboro_tata

2018/11/09 01:54

コメント入れ違ったかもしれない、、、、10:52の私からのコメントで解決できませんかね〜?
mamamamamama

2018/11/09 01:59

そうです~~~!わたしの言い方がわまりくどかったですね、大変申し訳ございませんでした!そしてありがとうございました!感謝です。わたしはもっと基本的なことを勉強しないとだめですね。がんばります。 <p><a href="<?php echo get_post_type_archive_link( $target_post ); ?>">全てをみる</a></p>で実現できました。長い時間お付き合いくださいましてありがとうございました!
marlboro_tata

2018/11/09 02:06

いえいえ。解決できて何よりでした。 おばさんのお節介ですが、WPを今後もたくさん取り扱うなら、お近くのMeetupなどに参加してみたり、wordpressのフォーラムで質問したりすると色々知見が得られると思います。
mamamamamama

2018/11/09 03:30

お節介どころかご親切にありがとうございます!そういったものにもぜひ参加してみたいと思います!今後ともよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問