うりのWordPressあれこれ

WordPressやphp に関することをメモ...

WordPress-カスタム投稿タイプの情報取得方法まとめ

カスタム投稿タイプとは、WordPressの標準の投稿とは別に、

独立した投稿フォームをを作成し、ブログを投稿できるというものです。

 

通常のカテゴリや記事情報の取得が若干異なり、いつも忘れてしまうのでメモしておきます。

カスタム投稿タイプ・タクソノミー情報の取得

$taxonomies = get_taxonomies( ’カスタム分類名’ ); 

これだけだと、

このカスタム分類のタームを取得します。

さらに詳しく取得したい場合は、

<?php 
$args=array(
'public' => true,
'_builtin' => false
);
$output = 'objects';
$taxonomies = get_taxonomies( $args, $output );

 

 

カスタム投稿タイプのアーカイブページ

現在のページのタームのslug

 $term;

 

htmlに表示させる場合は

<?php echo  $term; ?>

 

他には、こんな取得の方法もあります。

$taxonomy = $wp_query->get_queried_object();
$taxonomy_name = $taxonomy->name;

 

タームのラベルを表示

<?php single_term_title( ); ?>

または、

$taxonomy = $wp_query->get_queried_object();
$taxonomy_name = $taxonomy->label;

 

カスタム分類名の取得

$taxonomies = get_query_var('taxonomy');

 

タームを一覧で表示

 <?php wp_list_categories(array('title_li' => '', 'taxonomy' => 'カスタム分類名')); ?>

 

先ほどのカスタム分類の取得を合わせることで、

現在のアーカイブページのタームをリスト化できます。

$taxonomies = get_query_var('taxonomy');
<?php wp_list_categories(array('title_li' => '', 'taxonomy' => $taxonomies )); ?>

 

分岐のいろいろ

カスタム分類別の分岐して表示する

カスタム分類のテンプレートの優先順位は、

  1. archive-カスタム投稿タイプ名.php
  2. archive.php
  3. index.php

 

カスタム分類名で表示を変えたい場合、このようにテンプレートを変えてもいいですが、一部のみ表示を変えたい場合は、分岐して表示させてしまった方が簡単です。

<?php
$taxonomy = get_query_var('taxonomy');
$term = get_term_by('slug', get_query_var('term') ,$taxonomy);
while ($term->parent!=0) $term = get_term($term->parent,$taxonomy);
if($term->slug === 'カスタム分類名A'): ?>
<p>AAAA</p>
<?php elseif($term->slug === 'カスタム分類名B'):?>
<p>BBBB</p>
<?php endif;?>

 

タームが階層になっていた場合、親タームと子タームで表示を変える場合

 <?php
$taxonomy = $wp_query->get_queried_object();
echo $taxonomy->parent;
?>
<?php if($taxonomy->parent == 0): ?>

<?php else: ?>

<?php endif; ?>