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

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

ただいまの
回答率

88.77%

パンくずリストのカテゴリを表示したい

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 1,413

koro703

score 29

wordpressでパンくずリストを表示したいのですが、
下記のHTMLでは投稿「ニュース&トピックス」のみ『トップ>1』など、
直接投稿記事にリンク表示されてしまい、間に「ニュース&トピックス」が
表示されません。

<表示されるもの>
●ブランドAやブランドB:カスタム投稿タイプ
●会社概要など:固定ページ

<カテゴリー部分が表示されないもの>
●ニュース&トピックス:投稿タイプ
カテゴリー:ニュース&トピックス
スラッグ:news-topics

ニュース&トピックスもきちんとした階層に表示されるためには、
どのようにしたら良いのでしょうか?

<a href="<?php echo home_url(); ?>/">TOP</a>

<?php //ブランド一覧ページの場合
if($slugName == 'brand' || is_post_type_archive()): ?>
> <a href="/brand/">ブランド</a>

<?php //ブランドページの場合はブランド名を追加
if(is_post_type_archive()): ?>
> <strong><?php post_type_archive_title(); ?></strong>
<?php endif; ?>


<?php //ブランドAページの場合
elseif( in_array( get_post_type(), array( 'brand_a'))): ?>
> <a href="/brand/">ブランド</a> > <a href="/brand/brand_a/">ブランドA</a> > <strong><?php the_title();    ?></strong>

<?php //ブランドBページの場合
elseif( in_array( get_post_type(), array( 'brand_b'))): ?>
> <a href="/brand/">ブランド</a> > <a href="/brand/brand_b/">ブランドB</a> > <strong><?php the_title();    ?></strong>

<?php //ニュース&トピックスの場合
elseif( in_array( get_category('news-topics'))): ?>
> <a href="/news-topics/">ニュース&トピックス</a> > <strong><?php the_title();    ?></strong>

<?php //上記以外の場合
else: ?>

<?php foreach ( array_reverse(get_post_ancestors($post->ID)) as $parid ) { ?>
> <a href="<?php echo get_page_link( $parid );?>" title="<?php echo get_page($parid)->post_title; ?>">
<?php echo get_page($parid)->post_title; ?></a>&nbsp;>&nbsp;
<?php } ?>
> <?php the_title(); ?>

<?php endif; ?>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2017/07/05 18:51

    カスタム投稿タイプ「ニュース&トピックス」にカスタム分類「カテゴリー」があり、「カテゴリー」のタームのひとつに「ニュース&トピックス」があるのでしょうか。

    キャンセル

  • koro703

    2017/07/06 09:36

    書き方が正しいか不安ですが…。「ニュース&トピックス」は、wordpress既存の「投稿」から作成して、その際に「news-topics」というカテゴリをあてている感じです。カスタム投稿タイプは、また別で作成しています。ご質問頂いている内容に答えられているでしょうか?

    キャンセル

回答 1

checkベストアンサー

+1

確認事項へのご返答ありがとうございました。
以下、回答です。


elseif( in_array( get_category('news-topics'))): ?>

この判定文がおかしいように思います。
in_array関数に引数がひとつしか渡されていません。

PHP: in_array - Manual

get_category関数ではなく、get_the_category関数で現在の記事が所属するカテゴリーを取得し、その中に、'news-topics'があるかを判定するようにしてはいかがでしょうか。

テンプレートタグ/get the category - WordPress Codex 日本語版


追記

get_the_category関数の戻り値はオブジェクトなので、こうかもしれません。

$categories = get_the_category();
foreach($categories as $category) :
    if('news-topics' === $category->slug) :
        var_dump($category);
    endif;
endforeach;

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/07/10 22:29

    ご提示のコードは問題ないと思います。
    カテゴリーが「ニュース&トピックス」のときに、このコードを追加した場所を通過するかどうかは確認されましたか。

    キャンセル

  • 2017/07/21 13:58

    お返事頂いていたのに、ご連絡が遅くなり申し訳ありません。
    この通過したかどうかは、どうやれば調べることが出来ますでしょうか?

    キャンセル

  • 2017/07/21 16:11

    echo "teratail82954";
    $categories = get_the_category();
    (以下略)
    のように記載して、echoした文字が表示されればその処理を通過していて、表示されなければ通過していなことがわかります。
    「反応無い」理由が、if文の条件に合致していないからか、それともそもそもコードを追加した場所が処理されていないからかを切り分けることが目的です。

    キャンセル

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

  • ただいまの回答率 88.77%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る