うりのWordPressあれこれ

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

固定ページやindexでカスタム投稿のターム(タクソノミー)を一覧で表示する

<ul>
<?php 
$args=array(
	'public'   => true,
	'_builtin' => false
);
$output = 'objects';
$taxonomies = get_taxonomies( $args, $output ); 
if ( $taxonomies ) {
	foreach ( $taxonomies as $taxonomy ) {
	if($taxonomy->name != 'cat_classification'){
	echo '<li><a href="'.$taxonomy->name.'/'.$taxonomy->name.'">' . $taxonomy->label . '</a></li>';	}
	}
}
?>
</ul>

WordPress-タグ情報取得・表示方法まとめ

記事に付けられたタグの一覧を表示する

(single.php

<?php the_tags(); ?>

先頭に Tags:という文字が付き、タグが複数あるときは「,」で区切り表示します。
結果
Tags:A,B,C

文字の変更・区切る文字の変更

<?php the_tags('この記事についているタグ: ',' > '); ?>

結果
この記事についているタグ:A>B>C

タグをリストで表示

先頭の「 Tags:」をなくし、リストで表示する場合

<?php the_tags('<ul><li>','</li><li>','</li></ul>');?>

結果
・A
・B
・C

タグアーカイブページで現在のタグ名を表示

タグアーカイブページ(tag.php)でタグ名を表示する場合は、single_tag_title()を使います。
このタグは、記事ページ(single.php)でも使えますよ。

<?php single_tag_title(); ?>

これを使えば、タグによって分岐して表示することもできます。

<?php if( single_tag_title() == 'タグA'): ?>
タグAの場合のみ表示されます
<?php else: ?>
タグA以外の場合に表示されます
<?php endif; ?>

wp_tag_cloud() を使ってタグを表示

wp_tag_cloud()は、「タグクラウド」と呼ばれるタグの一覧を表示するテンプレートタグです。「the_tags」とは異なり、登録してある全てのタグを表示します。

よくサイドバーに文字の大きさが異なるワードが並んでいますよね?アレがこのタグクラウドです。
文字のサイズは、各タグが投稿に付けられた回数が多いほど大きくなります。

このタグクラウドを使うことで記事ページでなくても指定のタグをのみ表示することができます。

<?php $args = array(
	'smallest'                  => 8, 
	'largest'                   => 22,
	'unit'                      => 'pt', 
	'number'                    => 45,  
	'format'                    => 'flat',
	'separator'                 => "\n",
	'orderby'                   => 'name', 
	'order'                     => 'ASC',
	'exclude'                   => null, 
	'include'                   => null, 
	'link'                      => 'view', 
	'taxonomy'                  => 'post_tag', 
); ?>
<?php wp_tag_cloud( $args ); ?>


指定できるパラメーターは
smallest
 最小使用数のタグのフォントの大きさを指定します。pxやemは書かないでください。
largest
 最大使用数のタグのフォントの大きさを指定します。pxやemは書かないでください。
unit
 「smallest」「largest」の単位をここで指定します。pt,px,em,% などです。
number
 クラウドに表示するタグの数。0を指定するとすべてのタグを表示します。
format
 クラウドのフォーマットを指定します。
flat  タグをホワイトスペースで区切る。
・list  タグをリスト(li)で表示。
・array タグを配列に格納し、phpで扱えるように配列のまま返す。
例えば、

<?php $tag = wp_tag_cloud( 'format=array' ); ?>

と$tagに配列で入れることでforeachなどのループ内に使えます。

separator
 タグの間に表示するテキストやスペースを指定できます。

orderby
タグの表示順を指定します。
・name   タグ名順で表示。
・count   使用数順で表示。

order
タグのソート順を指定します。
ASC  昇順(初期値)
・DESC 降順
・RAND ランダム(WordPress 2.5 以上で使えます)

exclude
除外するタグIDを指定します。

include
表示させるタグIDを指定します。

link
特定のタグを編集できるように設定
・view 閲覧(初期値)
・edit 編集
'edit'にすると、タグのリンクをクリックしたときに管理画面のタグ編集ページへ移動します。

taxonomy
クラウドの生成に使うタクソノミー、またはタクソノミーの配列
・post_tag   投稿タグ
・category   投稿カテゴリー
・link_category リンクのカテゴリー
taxonomy 引数を使ってカテゴリーのクラウドを表示しることもできます。

<?php wp_tag_cloud( array( 'taxonomy' => 'category' ) ); ?>


特定のタグのリンク付きリストを表示する場合

リストにしたときに、タグの使用件数によって文字の大きさを変えたくないので、「smallest」「largest」に同じ値を入れてあげます。
そして表示したいタグIDを'include'で指定します。

<?php $args = array(
	'smallest'                  => 14, 
	'largest'                   => 14,
	'unit'                      => 'pt', 
	'number'                    => 0,  
	'format'                    => 'list',
	'include'                   => 3, 
); ?>
<?php wp_tag_cloud( $args ); ?>

複数のタグIDを指定してリンク付きタグ一覧を表示する場合

複数タグIDを指定した場合は、numberの数字を配列に入れてあげればOKです。

<?php $args = array(
	'smallest'                  => 14, 
	'largest'                   => 14,
	'unit'                      => 'pt', 
	'number'                    => 0,  
	'format'                    => 'list',
	'include'                   =>  array(3,6,9), 
); ?>
<?php wp_tag_cloud( $args ); ?>

タグ情報を取得する

画像を入れるなど、もっと自由に書きたい場合は、get tags()を使用します。
get tags()は投稿タグの名前やslugを取得することができます。

<?php $tags_array = get_tags( ); ?>

また、パラメーターを指定することができます。上記に書いたwp_tag_cloud()とあまり変わらないです。
order
タグの並び順。
hide_empty
使用件数が 0 のタグを除くかどうか。
・true - 除く(初期値)
・false - 含める
exclude
一覧から除くタグ ID を指定。複数指定する場合は、コンマまたはスペース区切りで指定。
include
一覧に含めるタグ ID を指定。コンマまたはスペース区切りで指定。

number
取得するタグの数を指定。
offset
取得するタグのクエリ順でのオフセット。
注:タグ一覧の先頭から、指定した数をスキップします。
fields
戻り値のタイプ。
・all - タグオブジェクトの配列。(初期値)
・ids - タグ ID(整数)の配列。
・names - タグ名(文字列)の配列。
slug
取得するタグのスラッグ。

search
取得するタグ名に含まれる文字列。大文字/小文字を区別しない。
name__like
取得するタグ名に含まれる文字列。大文字/小文字を区別する。
description__like
取得するタグの「説明」に含まれる文字列。大文字/小文字を区別しない。

複数のタグIDを指定して情報取得し一覧で表示

複数のIDを指定する場合は、arrayに入れてあげます。

<?php
$tags = get_tags('include=array(15,16,17)');
if ($tags): foreach($tags as $tag):
?>
	<?php $tag_link = get_tag_link($tag->term_id); ?>
	<li>
		<a href='<?php echo $tag_link?>'>
		<?php echo $tag->name ?>
		</a>
	</li>
<?php endforeach; endif; ?>

$tag_link(タグID)でタグのurlを取得することができるタグです。

複数のパラメーターを指定する場合は、

<?php
$tags_list =array(
'include'    =>  array(15,16,17),
'hide_empty' => 'false ',
'number'     => '3'
);
$tags = get_tags( $tags_list );

と変数に入れて指定することもできます。

WorePressでよく使う条件分岐タグのまとめ

出力ページと一致した場合のみ表示するタグ

Topページ(http://sample.com/)
<?php if(is_home()): ?>
コンテンツを表示する
<?php endif; ?>

または

<?php if(is_front_page()): ?>
コンテンツを表示する
<?php endif; ?>
特定のカテゴリページの時に表示

(http://sample.com/?cat=○○)

<?php if(is_category('カテゴリID')): ?>
コンテンツを表示する
<?php endif; ?>
指定したカテゴリと一致した場合
<?php if(in_category('カテゴリID')): ?>
コンテンツを表示する
<?php endif; ?>
特定の記事にのみ表示

(http://sample.com/?p=○○)

<?php if(is_single('記事ID')): ?>
コンテンツを表示する
<?php endif; ?>
特定の固定ページにのみ表示

(http://sample.com/?page_id=○○)

<?php if(is_page('ページID')): ?>
コンテンツを表示する
<?php endif; ?>


ちなみに、複数のIDを指定する場合は、「,」で区切るか、変数に入れるかする。

複数のカテゴリIDを指定

<?php if(in_category('13,16')): ?>
コンテンツを表示する
<?php endif; ?>

複数のカテゴリslugを指定する
IDではなく、スラッグで指定することもできます。
指定するIDが多く、IDを調べるのが面倒な時は、スラッグを配列にして変数に入れてしまったほうが自分は楽です。

<?php 
 $category = array(
  'inu',
  'neko',
  'tori'
 )
if(in_category( $category )):
?>
コンテンツを表示する
<?php endif; ?>

カスタムフィールドの分岐タグ

カスタムフィールドに値が入っているか判断したい場合
<?php if(get_post_meta($post->ID,'フィールド名',true)): ?>
コンテンツを表示する
<?php endif; ?>
指定したカスタムフィールドの値の時のみ表示
<?php if(get_post_meta($post->ID,'フィールド名',true) == 'フィールドの値'): ?>
コンテンツを表示する
<?php endif; ?>

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; ?>