”シンプル”なデザインを、”フツー”のWEBサイトを

先日来仕事で取り組んでいるWordPressのテーマ作成。意外とはまってしまったのが、任意の記事の情報をその記事のIDから取得して表示する、という部分。しかも、タイトルにある通り、「ループの外で取得・表示」という縛りがあります。

中々な時間を費やしてしまったので、今後同じような場面に遭遇してもサクッと対処できるように、備忘録としてまとめておきます。

大前提として記事IDを確認しておく

記事IDとは、WordPress上で記事や固定ページに付与される個別のIDです。今回はこの記事IDをつかって、その記事の情報を取得・表示する、ということなので、この記事IDを確認しておく必要があるわけです。

記事IDの調べ方

WordPressのダッシュボードから「投稿記事一覧」を開きます。IDを調べたい記事のタイトルにカーソルを当てると、ブラウザの左下(chromeの場合)に下の図のようなページの遷移先が表示されます。

この赤枠で囲った部分(上の図の場合は「106」)が記事IDになります。

記事IDから記事の情報を取得して表示する(記事IDが106の場合)

記事タイトル

<?php echo get_the_title( 106 ); ?>

記事のパーマリンク

<?php echo get_permalink( 106 ); ?>

記事のサムネイル画像のURL

<?php wp_get_attachment_url(get_post_thumbnail_id( 106 )); ?>

記事の本文(100文字抜粋)

<?php 
  $post = get_post( 106 );
  $post->post_content;
  echo mb_substr(strip_tags($post->post_content), 0, 100);
?>

記事が属するカテゴリー名

リンクなし

<?php
$cats = get_the_category( 106 );
echo $cats[0]->cat_name;
?>

リンクあり

<?php
$cats = get_the_category( 106 );
if ( $cats[0] ) {
echo '<a href="' . get_category_link( $cats[0]->term_id ) . '">' . $cats[0]->cat_name . '</a>';
}
?>

記事が属するカテゴリーのスラッグ

<?php
$cats = get_the_category( 106 );
echo $cats[0]->category_nicename;
?>

記事の投稿日

<?php echo get_the_time('Y.n.j', 106 ); ?>

まとめ

PHPを理解して、WordPressをバリバリに使い倒している人からしたら「何をいまさら」な内容ですが、僕みたいに偏ったカスタマイズ経験しか持ち合わせていないと、意外とはまってしまうもんなんです。