用語集にサイトタグを使用しています。タグが存在する場合はタグ付きページへのリンクを表示します。それ以外の場合はタグのタイトルのみを表示します。タグが投稿にタグ付けされているかどうかを確認するためのチェックはありますか?
$tags = get_tags( array( 'hide_empty' => false ) );
if ($tags) {
foreach ($tags as $tag) {
if ($tag->description) {
echo '<dt style="display:inline; float:left; padding-right:5px;"><strong><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
}
}
}
(実用)Chipの推奨からの更新
$tags = get_tags( array( 'hide_empty' => false ) );
if ($tags) {
foreach ($tags as $tag) {
if ($tag->description) {
echo '<dt style="display:inline; float:left; padding-right:5px;"><strong>';
if ( 0 < $tag->count ){
echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a>';
} else {
echo $tag->name;
}
echo '</strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
}
}
}
最終結果の例 http://i.imgur.com/aFs6z.png
has_tag()
条件付きテンプレートタグを使用してみてください。例えば、タグ "foobar"を問い合わせるには、
<?php
if ( has_tag( 'foobar' ) ) {
// The current post has the tag "foobar";
// do something
} else {
// The current post DOES NOT have the tag "foobar";
// do something else
}
?>
あなたがループの内側の場合、単に<?php has_tag( $tag ); ?>
を呼び出してください。あなたがoutside Loopの場合、投稿IDを渡す必要があります:<?php has_tag( $tag, $post ); ?>
だから、あなたのコードを近似する:
$tags = get_tags( array( 'hide_empty' => false ) );
if ( $tags ) {
foreach ( $tags as $tag ) {
if ( has_tag( $tag->slug ) ) {
// Current post has $tag;
// output the tag link
echo '<dt style="display:inline; float:left; padding-right:5px;"><strong><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
} else {
// Current post does NOT have the tag;
// output just the tag name
echo $tag->name;
}
}
}
_編集_
だから、別の考え:あなたが用語の任意のリストから引き出していて、その用語がpostタグとして使われているかどうかを決定したいのなら、 term_exists()
条件を使うことを試すことができます。例えば投稿タグとして「foobar」が使用されているかどうかを知りたい場合は、
<?php
if ( term_exists( 'foobar', 'post_tag' ) ) {
// The term 'foobar' is used as a post tag;
// do something
}
?>
しかし、私はまだあなたの "タグ"の出所についてここで混乱しています。
編集2
それでは、 タグの数 がゼロより大きいことに基づいてクエリを実行します(つまり、タグは少なくとも1つの投稿で使用されています)。
$tags = get_tags( array( 'hide_empty' => false ) );
if ($tags) {
foreach ($tags as $tag) {
if ( 0 < $tag->count ) {
echo '<dt style="display:inline; float:left; padding-right:5px;"><strong>';
if ( has_tag( $tag->slug ) ) {
echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a>';
} else {
echo $tag->name;
}
echo '</strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
}
}
}
get_tags
から返されたcountフィールドを使って投稿があるかどうかをチェックすることができます。
$tags = get_tags( array( 'hide_empty' => false ) );
if ($tags) {
foreach ($tags as $tag) {
echo '<dt style="display:inline; float:left; padding-right:5px;"><strong>';
//check tag count
if($tag->count > 0){
//its used on posts
if ($tag->description) {
echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt><dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
}else{
echo '<a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . ' style="text-decoration:none;">' . $tag->name.'</a></strong></dt>';
}
}else{
//no posts
echo $tag->name;
if ($tag->description)
echo '<dd style="margin-bottom:20px;">' . $tag->description . '</dd>';
}
}
}