WordPress2016/03/222016/03/250Workswordpress:親カテゴリ、最上位カテゴリを取得するwordpressでWEBサイトを作成していると、親カテゴリとか最上位カテゴリを取得する必要が出てきたります。親カテゴリによって分岐したり、最上位カテゴリでデザイン変えたりと。そんな時に使える方法を書いていますのでよろしければご参考まで。記事詳細(single.php)で取得カテゴリーアーカイブ(category.php)カテゴリーアーカイブでの取得方法です。カテゴリ構成はこのようにしています。SF※例は3階層目の「SF」ページでの結果です。親カテゴリを取得するカテゴリーアーカイブではwp_queryの「queried_object」にカテゴリ情報セットされています。その情報は「get_queried_object()」という関数で取得できます。14)親カテゴリですので、その中の「category_parent」を取り出してやればOKです。あとは「get_category()」でそのカテゴリー情報を取得し必要なものだけ出力してやれば完了です。);最上位カテゴリを取得する最上位カテゴリを取得する場合はwordpressで用意されている関数、「get_category_parents()」を使用します。日本語版まずget_query_var()で現在のカテゴリを取得してそのIDを元に最上位カテゴリを取得します。);//結果BLOG/アニメ/SF/get_category_parents()には引数が設定でき、リンク付きで返したりも出来ます。パンくず作る時とかに便利ですね。今回は最上位カテゴリの取得なので下記のようにします。true);引数はこのようになっています。);get_category_parentsで帰ってくるのはカンマ区切りの文字列なのでそれを配列に変換してやります。);スラッグからカテゴリー情報を取得します。$parents[0]で一番上の、つまり最上位カテゴリということになります。記事詳細(single.php)詳細ページでの取得方法です。カテゴリーはこのようにチェックしています。※複数カテゴリーにチェックしている場合は下記方法ではうまく取得できない可能性があります。記載している内容は1記事1カテゴリーでの取得・表示になります。親カテゴリを取得するまずは現在のカテゴリを取得します。取得するには「get_the_category()」を使用します。14)wordpressは複数カテゴリーを選択できる設計になっているのでget_the_categoryで返ってくるカテゴリーは1つであっても配列になっています。$cats[0]で1番めのカテゴリーを抜き出してやります。※複数のカテゴリにチェックを入れている場合にうまくいかないのは0番目に必ずしも最下層のカテゴリが来るわけではないということです。これで$categoryに属しているカテゴリ情報が入っていますのでそのなかの「category_parent」が親カテゴリーのIDになります。);最上位カテゴリを取得する最上位カテゴリの取得はアーカイブページと同様「get_category_parents()」を使用します。やり方は一緒なので最上位カテゴリを取得する(カテゴリーアーカイブ)を御覧ください。親カテゴリ取得時と同様、まず属しているカテゴリを取得してから最上位カテゴリを取得します。);いかがでしたでしょうか?少ないカテゴリーであればis_categoryやin_categoryで分岐を書いてもいいかと思うんですが、多くなってくるとそういうわけにもいかないと思うのでこういう方法が必要になってくるかなと。複雑なカテゴリ構成だとterm_metaに予め階層を入れておいたり、記事更新の際にカテゴリーツリーをカスタムフィールドで入れておくとかすると取り出しも楽になるのでそっちの方がおすすめですかねー。固定ページの親・最上階層ページについても書いてますのでよろしければどうぞ。WordPressコメント(0)おもしろかった・役に立った▼ブログランキング参加中!クリック!▼おすすめ関連の記事wordpress:ダウンロードしたテーマは絶対カスタマイズしちゃダメ!カスタマイズは子テーマを使え!wordpress:マルチサイト化する手順wordpress:マルチサイトで複数の子サイトの記事をまとめて親サイトに日付順表示させるwelcart:数量入力inputボックスをtextからnumberにするwelcart:カートのサムネイルサイズを変更するwordpress:メンテナンスモードを固定ページを使って作成。Form:セレクトに「選択してください」を追加する。確認画面や送信メールの調整も。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。