archive.php(date.php、category.php、tag.php)の中でよく使うWordPressのコード

HTMLサイトをWordPressにする本

年月日/カテゴリー/タグ見出しの条件分岐

<?php if(is_date()): ?>
  <!--年月日アーカイブページの「年」を出力-->
  <h2><?php echo get_query_var('year'); ?></h2>
<?php elseif(is_category() || is_tag()): ?>
  <!--カテゴリーとタグページで、ターム名を出力-->
  <h2><?php echo get_queried_object()->name; ?></h2>
<?php endif; ?>

カテゴリーページの現在のカテゴリー名を表示

※ループ外で使用する必要があります。

<?php single_cat_title(); ?>

現在のカテゴリーページの説明を表示

<?php echo category_description(); ?>

現在のタグページの説明を表示

<?php echo tag_description(); ?>

年別アーカイブリストを表示

・投稿タイプ=投稿(post)/カスタム投稿の場合は(info-en)のように指定
・ 年別(yearly)※月別にしたい場合は「monthly」に変更
・ 件数表示あり(show_post_count=1)
・ 後ろに「年」を入れる(after=年)

<ul class="archive-list">
  <?php wp_get_archives('post_type=post&type=yearly&show_post_count=1&after=年'); ?>
</ul>

年別アーカイブリストを表示(セレクトボックス)

・投稿タイプ=投稿(post)/カスタム投稿の場合は(info-en)のように指定
・ 年別(yearly)※月別にしたい場合は「monthly」に変更
・ 後ろに「年」を入れる(after=年)

<select name="archive-dropdownlist" onchange="document.location.href=this.options[this.selectedIndex].value;">
  <option disabled selected value>アーカイブ</option>
  <?php wp_get_archives('post_type=post&type=yearly&format=option&after=年'); ?>
</select>

カテゴリーリストを表示

・カテゴリー一覧=タイトルなし(title_li=)

<ul class="archive-list">
  <?php wp_list_categories('title_li='); ?>
</ul>

・件数表示あり(show_count=1)

<ul class="archive-list">
  <?php wp_list_categories('title_li=&show_count=1'); ?>
</ul>

・一部のカテゴリーのみ表示(include=「ID1」,「ID2」)

<?php wp_list_categories('title_li&include=1,7'); ?>

・一部のカテゴリーを非表示(exclude=「ID1」,「ID2」)

<?php wp_list_categories('title_li&exclude=3,15'); ?>

タグクラウドを表示

・登録されているタグをulタグで表示

<?php wp_tag_cloud('format=list'); ?>

・一部のタグのみ表示(include=「ID1」,「ID2」)

<?php wp_tag_cloud('include=1,7'); ?>

・一部のタグを非表示(exclude=「ID1」,「ID2」)

<?php wp_tag_cloud('exclude=2,8'); ?>

「投稿」記事一覧をページネーション付きで表示(プラグイン使用)

※この例では、ページネーションを出力するプラグイン「WP-PageNavi」を使用しています。

<?php if(have_posts()): ?>
  <div class="article-list">
  <?php while(have_posts()): the_post(); ?>
    <article>
      <a href="<?php the_permalink(); ?>">
        <figure class="img-block">
        <?php if(has_post_thumbnail()): ?>
          <?php the_post_thumbnail('thumbnail'); ?>
        <?php else: ?>
          <img src="<?php echo get_stylesheet_directory_uri()?>/img/comingsoon.jpg" alt="comingsoon">
        <?php endif; ?>
        </figure>
        <div class="txt-block">
          <time datetime="<?php the_time('Y-m-d'); ?>" class="date"><?php the_time(get_option('date_format')); ?></time>
          <h3><?php the_title(); ?></h3>
        <?php 
        $cats = get_the_category();
        if($cats):
        ?>
          <ul class="post-categories">
          <?php foreach($cats as $cat): ?>
            <li><?php echo $cat->name; ?></li>
          <?php endforeach; ?>
          </ul>
        <?php endif; ?>
        </div>
      </a>
    </article>
  <?php endwhile;?>
  </div>
<?php else: ?>
  <p>記事はありません。</p>
<?php endif; ?>

<?php wp_pagenavi(); ?>

「投稿」記事一覧をページネーション付きで表示(プラグイン無し)

<?php if(have_posts()): ?>
  <div class="article-list">
  <?php while(have_posts()): the_post(); ?>
    <article>
      <a href="<?php the_permalink(); ?>">
        <figure class="img-block">
          <?php if(has_post_thumbnail()): ?>
            <?php the_post_thumbnail('thumbnail'); ?>
          <?php else: ?>
            <img src="<?php echo get_stylesheet_directory_uri()?>/img/comingsoon.jpg" alt="comingsoon">
          <?php endif; ?>
        </figure>
        <div class="txt-block">
          <time datetime="<?php the_time('Y-m-d'); ?>" class="date"><?php the_time(get_option('date_format')); ?></time>
          <h3><?php the_title(); ?></h3>
        <?php 
          $cats = get_the_category();
          if($cats):
        ?>
          <ul class="post-categories">
            <?php foreach($cats as $cat): ?>
              <li><?php echo $cat->name; ?></li>
            <?php endforeach; ?>
          </ul>
        <?php endif; ?>
        </div>
      </a>
    </article>
  <?php endwhile;?>
  </div>
<?php else: ?>
  <p>記事はありません。</p>
<?php endif; ?>

<?php
  $args = array(
    'mid_size' => 2,  // 現在のページの左右にそれぞれ表示するページ番号の数
    'prev_text' => 'Prev',  // 投稿の前のセットへのリンクテキスト
    'next_text' => 'Next',  // 投稿の次のセットへのリンクテキスト
    'type' => 'list', // ul を使ったリストタグで出力したい場合に指定する
  );
  echo paginate_links( $args );
?>

本文の抜粋を文字数制限&HTMLタグや半角スペースを削除した状態で表示

※120文字で本文の抜粋を表示

<?php
if(mb_strlen($post->post_content, 'UTF-8') > 120):
  $content = str_replace('\n', '', mb_substr(strip_tags($post->post_content), 0, 120, 'UTF-8'));
  echo $content .'…';
else:
  echo str_replace('\n', '', strip_tags($post->post_content));
endif;
?>

記事に一定期間Newマークを表示

<?php 
$days = 7;  // 表示させたい日数
$published_time = get_post_time();
$today = wp_date('U');
$show_threshold = $today - $days * 86400;  // 24時間=86400秒

if($published_time > $show_threshold):
  echo '<span class="new">New</span>';  // 表示させたいコード
endif;
?>

パンくずリストを表示

※この例では、パンくずリストを出力するプラグイン「Breadcrumb NavXT」を使っています。

<ol>
  <?php if(function_exists('bcn_display')) bcn_display_list(); ?>
</ol>

最低限覚えておきたい
WordPressのコード