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

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

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

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

PHP

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

Q&A

解決済

2回答

3269閲覧

ワードプレスのパンくずリストで親カテゴリー、子カテゴリーを全て表示したものを作成したいのですが、表示させたくないカテゴリーを指定することはできるのでしょうか?

siruba

総合スコア44

WordPress

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

PHP

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

0グッド

1クリップ

投稿2019/06/04 02:47

編集2019/06/05 01:39

ワードプレスのパンくずリストで親カテゴリー、子カテゴリーを全て表示したものを作成したいのですが、
表示させたくないカテゴリーを指定することはできるのでしょうか?

現在は下記の参考サイトでやってみた結果、

ホーム > 親カテゴリーA > 子カテゴリーA
ホーム > 親カテゴリーA > 子カテゴリーB
ホーム > 親カテゴリーA > 子カテゴリーC
ホーム > 親カテゴリーA
ホーム > 親カテゴリーB
ホーム > 親カテゴリーC

という形になりました。
下3つの
ホーム > 親カテゴリーA
ホーム > 親カテゴリーB
ホーム > 親カテゴリーC
を表示させたくないのですが、カテゴリの除外の構文をご教示頂きたく存じます。

参考URL:http://funcs.org/565

php

1 <!--ぱんくず --> 2<?php 3$postcats = get_the_category(); 4foreach($postcats as $postcat){ 5 $catid = $postcat->cat_ID; 6 $allcats = array($catid); 7 while(!$catid==0) { 8 $mycat = get_category($catid); 9 $catid = $mycat->parent; 10 array_push($allcats, $catid); 11 } 12 array_pop($allcats); 13 $allcats = array_reverse($allcats); ?> 14 <div id="breadcrumb"> 15 <div itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> <a href="<?php echo home_url(); ?>" itemprop="url"> <span itemprop="title">ホーム</span> </a> 16<?php 17 foreach($allcats as $catid){ ?> 18 &gt; 19 <div itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> 20 <a href="<?php echo get_category_link($catid); ?>" itemprop="url"> 21 <span itemprop="title"><?php echo get_cat_name($catid); ?></span> 22 </a> 23<?php 24 } 25 foreach($allcats as $catid){ ?> 26 </div> 27<?php 28 } ?> 29 </div> 30 </div> 31<?php 32} ?> 33 <!--/ ぱんくず --> 34

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

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

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

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

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

miyabi_takatsuk

2019/06/04 17:34

可能か不可能かだけお答えすればよろしいのでしょうか? それとも、いただいたコードを元に具体的な、カテゴリの除外の構文の回答がほしいということですか? 質問文が可能かどうかの回答をお求めの内容だったので、一応確認です。
siruba

2019/06/05 01:40

失礼しました。 カテゴリの除外の構文を頂きたいと考えておりましたので質問文を修正しました。 よろしくお願いします。
miyabi_takatsuk

2019/06/05 01:42

質問文修正ありがとうございます。 回答させていただきます。
guest

回答2

0

あまり推奨されないと思いますが、要件を満たすだけなら下記で実現できると思います。

1.Bodyにスラッグ名のクラスをつけるようにする

 参考 https://nelog.jp/body_class
※親カテゴリーと子カテゴリーを両方出せるのかなどを確認してください。

2.表示したくないページをCSSで消す

css

1.catA{display:none} 2.catA.catB{display:block} 3

あまり推奨されませんが・・・。

投稿2019/06/05 03:12

no1knows

総合スコア3365

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

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

miyabi_takatsuk

2019/06/05 03:13

最終手段、これですね・・・。
siruba

2019/06/05 03:37

回答ありがとうございます。 出来なそうであればこちらを検討させて頂きます。
miyabi_takatsuk

2019/06/05 03:53

zilchさん、すみません、コメントの記事参考に回答修正させていただきました・・・。 申し訳ないです。
no1knows

2019/06/05 03:57

miyabi_takatsukさん、コード修正のご対応ありがとうございます。 sirubaさんの問題が解決できれば大丈夫です!
siruba

2019/06/05 04:16

出来ました。 凄すぎます・・・ miyabi_takatsuk様、zilch様 本当にありがとうございます。
guest

0

ベストアンサー

WordPressにおいて、親カテゴリ、子カテゴリを振り分け、
どちらかを非表示などはけっこう工夫が必要になります。
親カテゴリがあるかないか、で子カテゴリを抽出されるといいかと思います。
また、今回の要件の場合、カテゴリの数だけ出力ではなく、出力したいカテゴリのみのデータを先に作り、それを元に、
繰り返し出力を実行した方が、整理ができるでしょう。

下記をお試しください。

php

1<?php 2 3$postcats = get_the_category(); 4$allcats = array(); 5 6// まず、出力したいデータを先に整形 7foreach($postcats as $postcat){ 8 $catid = $postcat->cat_ID; 9 // 親カテゴリがいるかをチェック 10 $parent = get_category($postcat->category_parent); 11 if ($postcat->parent) { 12 // 親がいるなら整形データにプッシュ 13 array_push($allcats, array($parent, $postcat)); 14 } 15 // 親がない=親であるから、ここで除外になる 16} 17 18foreach($allcats as $viewCats){ ?> 19 20<div id="breadcrumb"> 21 <div itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> <a href="<?php echo home_url(); ?>" itemprop="url"> <span itemprop="title">ホーム</span> </a> 22 <?php foreach($viewCats as $cat){ ?> 23 &gt; 24 <div itemprop="child" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"> 25 <a href="<?php echo get_category_link($cat->cat_ID); ?>" itemprop="url"> 26 <span itemprop="title"><?php echo get_cat_name($cat->cat_ID); ?></span> 27 </a> 28 </div> 29 <?php } ?> 30 </div> 31</div> 32<?php } ?>

実際に動かしたわけではないので、うまく動くかわかりませんので、動かなかったら、コメントください。

投稿2019/06/05 02:32

編集2019/06/05 03:50
miyabi_takatsuk

総合スコア9528

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

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

siruba

2019/06/05 02:58

回答ありがとうございます。 勉強になります。 今回試した結果は下記になりました。 ホーム > 親カテゴリーA > 子カテゴリーA ホーム > 親カテゴリーA > 子カテゴリーB ホーム > 親カテゴリーA > 子カテゴリーC ホーム > > 親カテゴリーA ホーム > > 親カテゴリーB ホーム > > 親カテゴリーC 非表示は出来ませんでしたが、参考にさせて頂きまして、自分でも良い方法がないか調べてみたいと存じます。 よろしくお願いいたします。
miyabi_takatsuk

2019/06/05 03:07 編集

なんやて・・・。 なんせ動かしたわけではないので、申し訳ない・・・。 if ($parent) { のところの条件式を変えればいけるかと思います。 var_dump($parent); で、親のデータ状況を出力し、 親がいるパターンのデータ状況と、親がいないデータ状況を確認し、 親がいる(子)パターンのデータ状況の時、ifが通るようにやってみてください。 私の回答だと、$parentになんらかのデータが入ってたら通る状況なので、 なんらかが必ず入るようですね。そこらへん手強いんですよ、WordPress。 (↑ってこれは、エラーで処理が止まらないようにする、CMSとして当たり前の処理ですw)
miyabi_takatsuk

2019/06/05 03:51

zilchさんのコメントの記事を参考に、条件式修正してみました。 どうかお試しください。 zilchさん>借用させていただきました! すみません!
siruba

2019/06/05 04:17

コードの修正もして頂きありがとうございます。 おかげ様で問題の解決ができました。 また大変勉強にもなりました。 本当にありがとうございます。
miyabi_takatsuk

2019/06/05 04:19

おおおおお、よかったですね! zilchさんの掲示していただいた記事のおかげでifの条件式を正しいものにすることができました。 zilchさん、大変ありがとうございます!
no1knows

2019/06/05 04:22

解決してよかったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問