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

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

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

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

PHP

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

Q&A

解決済

4回答

11957閲覧

Wordpressでカスタム投稿タイプのタクソノミー名を取得したい

hakase-labo

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/01/17 07:13

編集2017/01/17 10:05

###前提・実現したいこと
Wordpressのカスタム投稿タイプのシングルページで
タクソノミー名又はスラッグを取得したいと思っています。
検索するとタームの名前やスラッグを取得する情報は多数出てくるのですが
タクソノミー名は見つかりませんでした。

【追記・補足】
複数のタクソノミーにそれぞれ複数のタームが存在しており、
その記事が所属するタクソノミー名(又はスラッグ)を取得したいと思っています。

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

Wordpress codexでget_the_taxonomiesと言う関数を使えば出来そう
かなとアタリを付けているのですが現状上手く行っていません。

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

php

1<?php 2 $taxonomy_names = get_the_taxonomies( ); 3 print_r( $taxonomy_names ); 4?>

###試したこと
上記コードにてタクソノミー名やスラッグを表示させる事は出来たのですが、
Array([taxonomy_slug] => Taxonomy Name: <a href='http://yourdomain.com/Term_Slug/'>Term Name</a>.)
の様な形になっており、ここから必要な情報だけを抜き出す方法が分かりません。ご教授よろしくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
Wordpress4.6.2

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/01/17 07:21

Array([taxonomy_slug] => Taxonomy Name: <a href='http://yourdomain.com/Term_Slug/'>Term Name</a>.) のどの部分を取り出したいのかを明確にしてください。
kei344

2017/01/17 07:23

質問文のコードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
hakase-labo

2017/01/17 07:24

大変失礼しました。taxonomy_slugまたは、Taxonomy Nameの部分です。
ayaneko

2017/01/18 14:45

最終的にどのようなHTMLを出力したいのですか?あるいはどのような処理にその情報を利用したいのですか?その辺りをきちんと明示して下さい。
guest

回答4

0

PHP

1$taxonomy_names = get_post_taxonomies(); 2print_r( $taxonomy_names[ 0 ] );

投稿2017/01/17 09:11

kei344

総合スコア69400

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

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

hakase-labo

2017/01/17 10:01

回答ありがとうございます。 確かに頂いたコードでタクソノミーのスラッグは取得出来ますが、 複数のタクソノミーがある場合でも最初のタクソノミーのスラッグを取得するようです。 質問に不備があったようでご迷惑おかけしますが引き続きよろしくお願い致します。
kei344

2017/01/17 11:59

複数あるものをどのように利用しようとしているかがわかりません。
guest

0

これでしょうか。

PHP

1<?php 2 3 $taxonomy_names = get_post_taxonomies( ); 4 print_r( $taxonomy_names ); 5 6?>

参考URL

  • 関数リファレンス/get post taxonomies - WordPress Codex 日本語版

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_taxonomies

投稿2017/01/17 08:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hakase-labo

2017/01/17 10:03

回答ありがとうございます。 そちらの記事は目を通しておりました。 そちらのコードではタクソノミーの一覧が配列として返されるようです。 引き続きよろしくお願い致します。
退会済みユーザー

退会済みユーザー

2017/01/17 10:29

kei344さんの回答にあるとおり、配列の要素を参照すればいいと思うのですが、質問者様はどのような形でタクソノミーを取得したいのですか?
guest

0

自己解決

質問の内容がわかりづらくて回答者様達にはご迷惑をおかけしました。

複数のタクソノミーがあり、それぞれに複数のタームが存在しており、
個別の記事はそのいずれか(一つ)のタームに所属している状態で、
その記事が所属するタームの親(タクソノミー)の名前を取得したいという事でした。
(説明がヘタで申し訳ありません。)

php

1<?php $taxonomy_names = get_the_taxonomies( ); 2foreach ($taxonomy_names as $key => $value) 3 echo $key; 4?>

こんな感じでタクソノミーのスラッグは取得出来るようでしたので、
あとはなんとかなりそうです。

投稿2017/01/19 01:17

hakase-labo

総合スコア12

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

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

0

タクソノミー名(正確にはターム名)やスラッグのみを取得したい場合
get_the_taxonomies()よりもget_the_terms( $id, タクソノミー名 )のほうが適切ではないかと思います。
例えば

PHP

1$terms = get_the_terms($post->ID,'タクソノミー名');

とするとその記事に紐付けられているターム情報がすべて取得できます。
この情報はオブジェクトで返ってくるため
var_dump($terms)とでもすれば取得されたオブジェクトの内容をまず確認するのが良いでしょう。

そこから取得したいデータを出力したい形状で出力すればOKです。
また、オブジェクトや配列はforeachなどでループで処理するのが基本かなと。

PHP

1$terms = get_the_terms($post->ID,'タクソノミー名'); 2if($terms){ 3 foreach ($terms as $term) { 4 //Ex. ターム名なら 5 $term_name = esc_html($term->name); 6 //Ex. リンクを付けたければこんな感じでも可 7 echo '<a class="クラス名" href="', esc_url( home_url('/') ), 'タクソノミー名/', esc_attr($term->slug) ,'/" title="カテゴリー:', $term_name ,'">', $term_name ,'</a>'; 8 } 9}

####余談
タクソノミー: カテゴリーやタグなどの「分類」そのものを指します
ターム  : タクソノミー下に設定した各カテゴリーなどを指します。
※ホーム>カテゴリー(←これがタクソノミー)>ブログ(←これがターム)

投稿2017/01/17 17:43

編集2017/01/17 19:26
manabufukai

総合スコア700

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問