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

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

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

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

Q&A

解決済

1回答

301閲覧

カテゴリリンクを複数のテンプレートで使用したい

pontas

総合スコア54

WordPress

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

0グッド

0クリップ

投稿2019/08/08 03:33

編集2019/08/08 03:41

前提・実現したいこと

カテゴリリンクを複数のテンプレートで使用したいです。
テンプレートで共通で使用しても該当のカテゴリが表示されるようにしたいです。
プラグインは「Advanced Custom Fields」を使用してテキストと背景を任意に色変えられるようにしております。

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

下記のソースで試しましたがこれだと複数のテンプレートで使用しているので
例えば個別ページですと
個別ページの記事タイトルのカテゴリが
次の記事、前の記事にも影響を受けてしまい個別ページのカテゴリリンクを表示してしまいました。
何か対応策があればお知恵を拝借させてください

###function.php 該当のソースコード

function categories_label() { $categories = get_the_category(); if(!empty($categories)){ if(!is_wp_error($categories)){ foreach($ categories as $category){ $category_link = get_category_link($category->term_id); $category_name = $category->name; $category_id = $category->cat_ID; $category_color = 'category_'.$category_id; $bk_color = get_field('cat_color_bg',$category_color); $text_color = get_field('cat_color_txt',$category_color); echo '<a href="'.$category_link.'" style="background-color:'.$bk_color.';color:'.$text_color.';">'.$category_name.'</a>'; } } } } コード

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

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

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

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

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

kei344

2019/08/08 11:16

まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。また、解決されていないなら状況を質問文に追記ください。
guest

回答1

0

ベストアンサー

get_the_category関数は、投稿データのカテゴリー情報を取得するのでget_categories関数を使用してみてはどうでしょう。

PHP

1function categories_label() { 2 3 $categories = get_categories();//ここをカテゴリー一覧を取得するget_categories関数に変更 4 if ( !empty( $categories ) ) { 5 6 if ( !is_wp_error( $categories ) ) { 7 foreach ( $categories as $category ) { 8 $category_link = get_category_link( $category->term_id ); 9 $category_name = $category->name; 10 $category_id = $category->cat_ID; 11 $category_color = 'category_' . $category_id; 12 $bk_color = get_field( 'cat_color_bg', $category_color ); 13 $text_color = get_field( 'cat_color_txt', $category_color ); 14 echo '<a href="' . $category_link . '" style="background-color:' . $bk_color . ';color:' . $text_color . ';">' . $category_name . '</a>'; 15 } 16 } 17 } 18}

投稿2019/08/08 03:45

yukikp

総合スコア797

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

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

pontas

2019/08/08 03:56

早速のご返答ありがとうございます 試してみます!
pontas

2019/08/08 04:00

get_categories();を使用してみた所 カテゴリ全部が表示されてしまった為、使用が出来そうにありませんでした
yukikp

2019/08/08 05:28

特定の一部のカテゴリを使いたいとなかったので、全部のカテゴリかと思いました。 関数に引数を与えれば特定のカテゴリだけにすることができるのですが、どんなカテゴリのリストにしたいのでしょうか?
pontas

2019/08/08 05:45

カテゴリリストというよりも 個別ページでカテゴリに登録している記事を 各ページ(トップページ、固定ページ等)で使用しておりまして function.phpに記載したソースですと 個別ページで「関連記事」「おすすめ記事」「前の記事」「次の記事」などで 使用しているカテゴリが全部個別ページのカテゴリになってしまう為対処方法を探しておりました。
yukikp

2019/08/08 06:08 編集

すみません。。。 ホントに何一つわからない〜>< 悔しい。。。 >個別ページでカテゴリに登録している記事を 各ページ(トップページ、固定ページ等)で使用しておりまして 「個別ページでカテゴリに登録している記事」と言うのがよくわからないんですよね。「特定のカテゴリに登録している記事のリストをいろんなところで表示させたい」ではないのでしょうか? 例えばレストランのサイトだとして、 いろんなところで「女性一人で行けるカテゴリーに属している店舗リスト」「絶対禁煙店舗リスト」みたいなのを表示させているってことですか?
yukikp

2019/08/08 06:02

>function.phpに記載したソースですと 個別ページで「関連記事」「おすすめ記事」「前の記事」「次の記事」などで 使用しているカテゴリが全部個別ページのカテゴリになってしまう為対処方法を探しておりました。 これはなんか、書き方が間違ってる気がします。関連記事でも、おすすめ記事でもなんでも良いので、どんなコードを書いてるか追記してもらえませんか?
pontas

2019/08/08 07:13 編集

ご連絡遅れ申し訳ございません 実は出来合いのテーマを使用しておりまして、 かなり読み込みファイルがあり自分でも理解が追い付かない状態でして(;^_^A インクルードファイルが多すぎて一部ファイルがを添付する事ができませんでした。。。。 なので自分なりに考え 個別ページのみ「is_single」で他と分けてカテゴリにIDを入れ切り替えるようにしてみました。 色々と調べて頂いて申し訳ございません テーマのカスタマイズは予想以上に厄介です。。。
yukikp

2019/08/08 10:26

解決したのなら良かったです。 が、何を表示させたいのかわからないから、あれこれ質問しているのに全部無視されると悲しいです。。。(´;ω;`) テーマのカスタマイズするならば、子テーマを作って行うべきですので、「wordpress 子テーマ」で検索するといいことがあると思いますよ。
pontas

2019/08/08 11:15

ご丁寧にご質問してくださったのに申し訳ございませんでした・・・ あまり上手く説明ができないのですが 「特定のカテゴリに登録している記事のリストをいろんなところで表示させたい」というよりも「関連記事リスト」「おすすめリスト」というように 既に出来合いのリストがありまして、そこにカテゴリリンクがないので付けないといけなかったんです。 ですが個別ページや複数の要素のリストがあると上手く動作ができないようでして、厄介なことに共通テンプレートで出し分けをしているので対応が難しく説明もしずらい状態でした。 不快な思いをさせて申し訳ございません
yukikp

2019/08/08 11:22

めっちゃ理解できました!ひゃっふー! 不快じゃないから大丈夫ですよ〜 多分それぞれのリストのコードを見てもらえば何が悪いかわかると思います。
pontas

2019/08/08 11:30 編集

お優しい言葉ありがとうございます! 実は下記のテーマをカスタマイズしてたのですが 部品をテンプレート毎に用意しているので一つのテンプレートで完結していないから関連するテンプレートを出すことができず説明もしずらい状態でした。。。 https://gillion.shufflehound.com/news/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問