それぞれの投稿ページには、タグを付けることができます。
そのページのURLを出力するには、Wordpressループの中でthe_tags
という関数(テンプレートタグ)を使います。
タグを出力
通常はパラメータを指定せず、以下のように記述します。
<?php the_tags(); ?>
このように記述することで、「タグ:」という文字列の後に、その投稿に付けたタグの一覧がコンマで区切られリンク付きで出力されます。
ちなみに、その投稿にタグを付けていない場合は何も出力しません。
リンク無しでタグを出力
関数(テンプレートタグ)の the_tags
は、その投稿に付けたタグをリンク付きで出力しますが、そのリンクが不要な場合は the_tags
の関数は使わずに、get_the_tags
の関数に加工を加えて出力します。
<?php
$posttags = get_the_tags();
$count = count($posttags);
$loop = 0;
if ($posttags) {
foreach ($posttags as $tag) {
$loop++;
if ($count == $loop){
echo $tag->name . '';
} else {
echo $tag->name . ', ';
}
}
} ?>
タグをリスト出力
タグの一覧を出力する場合、その前後とタグの間に任意の文字列を指定して出力することが可能です。
以下は、タグの一覧を ul/li
要素で出力する際の関数です。
<?php the_tags( '<ul><li>', '</li><li>', '</li></ul>' ); ?>
この場合、タグ一覧の先頭と最後にそれぞれ「<ul><li>」と「</il></ul>」を出力し、タグとタグの間には「</il><li>」を出力します。
件数付きの全タグ一覧の表示
get_terms
の関数を使うことで、サイト内の全部のタグを一覧で表示させることができます。
<ul>
<?php
$term_list = get_terms('post_tag', Array('hide_empty' => false));
$result_list = [];
foreach ($term_list as $term) {
$u = (get_term_link( $term, 'post_tag' ));
echo "<li><a href='".$u."'>".$term->name."</a>(".$term->count."件)</li>";
}
?>
</ul>
上記の記述で、すべてのタグが以下のように ul/li
要素で出力されます。
<ul>
<li><a href="タグAのURL">タグその1(〇件)</a></li>
<li><a href="タグBのURL">タグその2(〇件)</a></li>
<li><a href="タグCのURL">タグその3(〇件)</a></li>
<li><a href="タグDのURL">タグその4(〇件)</a></li>
<li><a href="タグEのURL">タグその5(〇件)</a></li>
</ul>
全部のタグを10件まで一覧表示
get_terms
の関数を使い、その中の Array(‘number’ => XX)
の箇所を10と記述することで、サイト内のタグを10件表示させます。
<ul>
<?php
$term_list = get_terms('post_tag', Array('number' => 10));
$result_list = [];
foreach ($term_list as $term) {
$u = (get_term_link( $term, 'post_tag' ));
echo "<li><a href='".$u."'>".$term->name."</a>(".$term->count."件)</li>";
}
?>
</ul>
指定したタグを一覧表示
get_terms
の関数の、Array(‘include’ => array(タグID, タグID, タグID))
を指定して出力します。
<ul>
<?php
$term_list = get_terms('post_tag', Array('include' => array(タグID, タグID)));
$result_list = [];
foreach ($term_list as $term) {
$u = (get_term_link( $term, 'post_tag' ));
echo "<li><a href='".$u."'>".$term->name."</a>(".$term->count."件)</li>";
}
?>
</ul>