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

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

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

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

PHP

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

Q&A

解決済

3回答

12187閲覧

【WordPress】親カテゴリの情報のみ取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/05/02 04:17

編集2017/05/02 07:24

###前提・実現したいこと

タイトル通りですが、親カテゴリの情報を取得したいと思っております。

現状、子カテゴリのスラッグとネームまで取得してしまっています。

子カテゴリの記事でも親カテゴリの「$slug」と「$catname」を取得、表示したいたいです。

※管理画面では子カテゴリのみチェックを入れております。

よろしくお願いします。

###該当のソースコード

PHP

1<?php 2$cat = get_the_category(); 3$catname = $cat[0]->cat_name; 4$catslug = $cat[0]->slug; 5 6<p class="ico-cate <?php echo $catslug; ?>"><?php echo $catname; ?></p> 7?> 8

###該当のソースコード【追記1】

PHP

1<?php if (have_posts() ) : ?> 2 <?php while (have_posts()) : the_post(); ?> 3 <?php 4 // 現在のカテゴリ-を配列取得 5 $cat_now = get_the_category(); 6 // 親の情報を$cat_nowに格納 7 $cat_now = $cat_now[0]; 8 //category_name格納 9 $cat_name = $cat_now->name; 10 //slugを格納 11 $slug = $cat_now->name; 12 ?> 13 <p class="<?php echo $slug; ?>"><?php echo $cat_name; ?></p> 14 <?php endwhile; ?> 15<?php else : ?> 16 Not Found. 17<?php endif; ?>

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

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

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

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

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

guest

回答3

0

WPって、カテゴリ関連うまくいかないですよね・・・。
親カテゴリを取得するプロパティがあるようなので、そいつを使ってはいかがでしょうか?

PHP

1<?php if (have_posts() ) : ?> 2 <?php while (have_posts()) : the_post(); ?> 3 <?php 4 // 現在のカテゴリ-を配列取得 5 $cat_now = get_the_category(); 6 // 外に逃がすためにあらかじめ宣言 7 $cat_parent = false; 8 // カテゴリを一個一個検証 9 foreach($cat_now as $catValue) { 10 if (!isset($catValue->category_parent)) { 11 // 親がなかったら、データを入れて、foreachを終了 12 $cat_parent = $catValue; 13 break; 14 } 15 } 16 // カテゴリデータを入れなおす(親カテゴリ) 17 $cat_now = $cat_parent ? $cat_parent : $cat_now[0]; 18 19 //category_name格納 20 $cat_name = $cat_now->name; 21 //slugを格納 22 $slug = $cat_now->name; 23 ?> 24 <p class="<?php echo $slug; ?>"><?php echo $cat_name; ?></p> 25 <?php endwhile; ?> 26<?php else : ?> 27 Not Found. 28<?php endif; ?>

うまくいかなかったら、
10行目を
if (!$catValue->category_parent) {
にしたりしていろいろやってみてください。

参考:http://www.doe.co.jp/hp-tips/2013/07/24/wordpress%E3%81%A7%E8%A6%AA%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/

投稿2017/05/02 07:45

miyabi_takatsuk

総合スコア9555

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

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

退会済みユーザー

退会済みユーザー

2017/05/02 09:47

記事の共有ありがとうございます。 頂いたソースと合わせていじってみます。
guest

0

この辺を見てみてください。

【[WordPress]親カテゴリ-IDを取得する方法 | WordPress攻略本 商業サイトからアフィリエイトサイトまでの作り方】
http://blog.livegoods.net/archives/wordpress-parent-cat-id/

【WordPressでカテゴリIDを所得する時にはまった件 | WordPress整体院 施術日誌】
http://www.alive-website.com/notebook/wordpressでカテゴリidを所得する時にはまった件

投稿2017/05/02 05:22

kei344

総合スコア69583

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

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

退会済みユーザー

退会済みユーザー

2017/05/02 06:05 編集

情報共有ありがとうございます。 試してみます。
退会済みユーザー

退会済みユーザー

2017/05/02 06:52

教えて頂いた情報でカテゴリページでの表示は無事解決できました。ありがとうございます。 これをトップページやフロントページでのループ内で親カテゴリの情報得るためにはどうすればよろしいでしょうか?
kei344

2017/05/02 07:03

ループ内なら基本的に同じだと思いますよ。もし上手くいかなかったら質問文にコードを追記してください。
退会済みユーザー

退会済みユーザー

2017/05/02 07:26

お手数おかけします やはり子カテゴリのnameとslugが表示されてしまいました。 該当のソースコード【追記1】という名前で追記させて頂きました。 よろしくお願いします。
kei344

2017/05/02 07:36

追記部分にこちらの提示した記事の内容が反映されていないように見受けられます。再度確認してみてください。
退会済みユーザー

退会済みユーザー

2017/05/02 10:20

何度もすみません、ちょっとこちらの件自分でもいじってみたいと思います。 丁度GWですので また解決 or つまづいたら質問を更新したいと思います。
guest

0

ベストアンサー

もっとソースがきれいにできないかと思いましたが
以下の方法で解決できました。

<?php $cats = get_the_category(); $cat = $cats[0]; $cat_name = $cat->cat_name; $cat_slug = $cat->category_nicename; if ($cat->parent){ $parent = get_category($cat->parent); $cat_name = $parent->cat_name; $cat_slug = $parent->category_nicename; echo "<span class=\"ico-cate $cat_slug\">$cat_name</span>"; } else { echo "<span class=\"ico-cate $cat_slug\">$cat_name</span>"; } ?>

投稿2017/05/02 15:31

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問