ホームページを運営する上で、何かと非常に便利なワードプレスですが、様々なTipsを知っていればより深く自分好みのサイトにカスタマイズしていくことが可能です。
個人的には、PHPはまだまだ勉強が必要な状態ですが、先駆者様たちの情報を参考にさせて頂きながら、日々精進を続けている次第でございます。
ということで、今回は、ワードプレスの中でもカテゴリー・タグを出力する時に、覚えておきたいコードをまとめました。
また、カスタム投稿では、通常の書き方では(当たり前ですが)うまく動いてくれませんので、そちらも併せて掲載します。
目次
カテゴリー取得
カテゴリーをリンク付きで出力する
<?php the_category(); ?>
カテゴリーをリンク無しで出力する
<?php $cat = get_the_category(); ?> <?php $cat = $cat[0]; ?> <?php echo get_cat_name($cat->term_id); ?>
カテゴリーの一覧をリスト形式で取得する
<ul> <?php wp_list_categories('orderby=ID&title_li='); ?> </ul>
カテゴリーをclass名付与で取得
個々のカテゴリーによってデザインを変えたい場合などは、それぞれのカテゴリーにそれぞれのクラス名を割り振りして、スタイルシートで整える必要があります。
そういった場合に、下記コードを使用すると、各カテゴリーのスラッグ名がそのままクラス名として吐き出されます。
注意点としては、日本語でカテゴリー名を登録している場合は、そのスラッグを半角英語にしておく必要があります。
リンク付きで表示
<?php $cat = get_the_category(); $cat = $cat[0]; ?> <p class="<?php echo $cat->category_nicename; ?>"><?php the_category(' '); ?></p>
リンクなしで表示
<?php $cat = get_the_category(); $cat = $cat[0]; { echo '<p class="category '. $cat->category_nicename .'">'; } ?> <?php $cat = get_the_category(); $cat = $cat[0]; { echo $cat->cat_name; } ?></p>
タグ取得
タグをリンク付きで出力する
<?php the_tags(''); ?>
タグをリンク無しで出力する
<?php $posttags = get_the_tags(); if ($posttags) { foreach($posttags as $tag) { echo $tag->name . ' '; } } ?>
タグをリスト形式で出力する(リンク付き)
<?php the_tags('<ul><li>','</li><li>','</li></ul>'); ?>
タグをリスト形式で出力する(リンク無し)
<ul> <?php $posttags = get_the_tags(); if ($posttags) { foreach($posttags as $tag) { echo '<li>' . $tag->name . '</li>'; } } ?> </ul>
タグクラウドを取得する
タグクラウドは、外観>ウィジェットからでも設置できますが、任意のテーマファイルの場所で表示したい時などに、下記コードを使用すると便利です。
↓昇順&リスト形式で出力されます。
<?php wp_tag_cloud('order=ASC&format=list'); ?>
カスタム投稿でカテゴリー&タグ(タクソノミー)を動かす
カスタム投稿でカテゴリーやタグを運用したい場合、上記に記載したワードプレスのデフォルトの投稿で使用するコードを記述しても、内容は反映されません。
カスタム投稿を定義作成した内容を、それぞれのテンプレートタグに反映する必要があります。
ここでは、仮に下記の内容で定義したものとして、サンプルを記載します。
- カスタム投稿名 → shop
- タクソノミー(カテゴリー)→ cat_shop
- タクソノミー(タグ)→ tag_shop
カスタム投稿でカテゴリー取得
カテゴリーをリンク付きで出力する
<?php echo get_the_term_list($post->ID,'cat_shop'); ?>
カテゴリーをリンク無しで出力する
<?php if ($terms = get_the_terms($post->ID, 'cat_shop')) { foreach ( $terms as $term ) { echo esc_html($term->name); } } ?>
カスタム投稿でタグ取得
タグをリンク付きで出力する
<?php echo get_the_term_list($post->ID,'tag_shop'); ?>
タグをリンク無しで出力する
<?php if ($terms = get_the_terms($post->ID, 'tag_shop')) { foreach ( $terms as $term ) { echo esc_html($term->name); } } ?>
カスタムタクソノミーにclass名を付与して取得する
カテゴリーで取得する場合のサンプルです。
タグで取得したい場合は、cat_shopの部分を、tag_shopに置き換えます。
<p class="<?php $terms = wp_get_object_terms($post->ID,'cat_shop'); foreach($terms as $term){echo $term->slug . '';} ?>"><?php if ($terms = get_the_terms($post->ID, 'cat_shop')) { foreach ( $terms as $term ) { echo esc_html($term->name); } } ?></p>
それでは、あと少しおまけを追加したいと思います。
特定カテゴリーの中で該当カテゴリーのタグを取得する
<?php if( in_category ) : ?> <?php the_tags('<ul><li>','</li><li>','</li></ul>'); ?> <?php endif; ?>
記事一覧ページに特定カテゴリーのみの記事を出力する
<?php query_posts('showposts=10&cat=カテゴリーID'); while(have_posts()) : the_post(); ?> <p><a href="<?php the_permalink();?>"><?php the_title();?></a></p> <?php endwhile;?> <?php wp_reset_query();?>
以上がワードプレスで、カテゴリー・タグを出力する際に、便利に利用できるコードです。
ブログの記事が増えてきたり、サイトを色々カスタムしたい時の参考になれば幸いです。
ただし、よく書かれていることですが、テーマファイルの改変は自己責任です。
バックアップを取って実践してください。
投稿ならリビジョンで戻ることもできたりしますが、テーマファイルは『ファイルを更新』を押しちゃうと、(多分)元には戻せませんからね。
以上、ワードプレスでカテゴリー・タグを取得する方法のまとめでした。
ワードプレスは色々カスタマイズできるようになれば、どんどん楽しくなりますね。
(個人的にはキリが無いという考えもありますが。。)