single.phpの中でよく使うWordPressのコード

HTMLサイトをWordPressにする本

投稿IDを表示

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

<?php the_ID(); ?>

記事が所属するカテゴリー名をリンク付きで表示

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

<?php the_category(); ?>

記事が所属するカテゴリーをリンク無しで表示

<?php 
$cats = get_the_category();
if($cats):
?>
  <ul>
  <?php foreach($cats as $cat): ?>
    <li><?php echo $cat->name; ?></li>
  <?php endforeach; ?>
  </ul>
<?php endif; ?>

記事が紐づくタグをリンク付きで表示

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

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

記事が所属するタクソノミー名を表示

(例)タクソノミー名→diary-cat

<?php
$terms = get_the_terms($post->ID,'diary-cat');
foreach( $terms as $term ):
  echo $term->name;
endforeach;
?>

記事が所属するタクソノミー名をリンク付きで表示

(例)タクソノミー名→diary-cat

<?php
$terms = get_the_terms($post->ID,'diary-cat');
foreach( $terms as $term ):
  echo '<a href="'.get_term_link($term->slug, 'diary-cat').'">'.$term->name.'</a>';
endforeach;
?>

記事の投稿日を表示

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

<time datetime="<?php the_time('Y-m-d'); ?>"><?php the_time(get_option('date_format')); ?></time>

記事の更新日を表示

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

<time datetime="<?php the_modified_date('Y-m-d'); ?>"><?php the_modified_date(get_option('date_format')); ?></time>

記事に一定期間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;
?>

投稿されたタイトルと本文を表示

<?php if(have_posts()): ?>
  <?php while(have_posts()): the_post(); ?>
    <h1><?php the_title(); ?></h1>  <!--記事タイトル-->
    <?php the_content(); ?>  <!--記事本文-->
  <?php endwhile;?>
<?php endif; ?>

アイキャッチ画像を表示

※ループ内で使用する必要があります。
(サイズの指定:full、large、medium、thumbnail、array( 600, 400 ) ※指定したサイズ )

<?php if(has_post_thumbnail()): ?>
  <figure><?php the_post_thumbnail('full'); ?></figure>
<?php endif; ?>

前後記事へのリンクを表示

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

<ul>
  <li><?php previous_post_link('%link', '前の記事へ'); ?></li>
  <li><?php next_post_link('%link', '次の記事へ'); ?></li>
</ul>

最初と最後の記事で、空の<li>を表示させたくない場合は、条件分岐で非表示もできる。

&laquo; → «
%title → 記事のタイトル
&raquo; → »
falseをtrueに変更すると同じカテゴリ内の前後記事になる

<?php // 現在の投稿に隣接している前後の投稿を取得する
  $prev_post = get_previous_post();  // 前の投稿を取得
  $next_post = get_next_post();  // 次の投稿を取得
  if($prev_post || $next_post):  // どちらか一方があれば表示
?><ul>
<?php if($prev_post):?><li><?php previous_post_link('« %link', '%title', false, ''); ?></li><?php endif; ?>
<?php if($next_post ):?><li><?php next_post_link('%link »', '%title', false, ''); ?></li><?php endif; ?>
</ul><?php endif; ?>

投稿ユーザー名を表示

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

<?php the_author(); ?>

投稿のデザインをカテゴリーごとに変更

※事前に、カテゴリーごとにそれぞれparts-infocat.php、parts-infonews.php、parts-infomedia.phpのようなテンプレートファイルを作って使用してください。

<?php if(in_category('infocat')): ?>  <!-- カテゴリーがinfocatに属している場合-->
  <?php get_template_part('parts', 'infocat'); ?>
<?php elseif(in_category('infonews')):?>  <!-- カテゴリーがinfonewsに属している場合-->
  <?php get_template_part('parts', 'infonews'); ?>
<?php else: ?>  <!-- その他(カテゴリーがinfomediaに属している)の場合-->
  <?php get_template_part('parts', 'infomedia'); ?>
<?php endif; ?>

※カテゴリーのスラッグ名(infocat、infonews など)はカテゴリーのID名(数字)にしても動きます。
※記事が複数カテゴリーに該当する場合には、上から順番にテンプレートが優先表示されます。
※所属するカテゴリーを複数指定したい場合は、arrayで複数のカテゴリー名をまとめます。
 (例)in_category(array('infocat', 'infonews'))

現在の記事を除いた最新の投稿を表示

<?php
$id = get_the_ID();  // 現在の記事のIDを取得
$args = array(
  'post_type' => 'post',  // 投稿タイプ:「投稿」
  'post__not_in' => array($id),  // 現在の記事以外を取得
  'posts_per_page' => 5,  // 取得したい件数
  'post_status' => 'publish',  // 投稿ステータス:公開済み
);
$the_query = new WP_Query($args);
if($the_query->have_posts()):
?>
<ul>
  <?php while($the_query->have_posts()): $the_query->the_post(); ?>
  <li><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') ?>"><?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></li>
  <?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_postdata(); ?>

パンくずリストを表示

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

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

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