ワードプレスでショートコードを使って「投稿一覧」の記事を表示する方法
WordPress(ワードプレス)管理画面内のブロックエディタやウィジェットなど、PHPを直書き出来ない場面で重宝する「ショートコード」。
今回は「投稿一覧」の記事全体から、「投稿日」「タイトル」のみ取得して、投稿日時の新しい順番に任意の数だけ表示する、もっともシンプルでオーソドックスな方法についてご紹介します。
トップページにさりげなく新着のお知らせを数件表示する場合や、ブログのサイドバーウィジェットと相性が良いと思います。
functions.phpにショートコードを呼び出す為のプログラム(関数)を書く
WordPress(ワードプレス)のfunctions.php
ファイルに下のプログラムを記述します。コピペOK!
この関数をfunctions.php
に定義することで、このショートコードが使用できるようになります。
HTMLタグは<ul>
<li>
で出力するようにしていますが、表示する場所など状況に応じて最適なマークアップとなるように、出力するタグを変えてください。
/*ショートコードを使って投稿一覧の記事を任意の数だけ表示 */
function sample_post_list() { // 変数を定義
global $post;
$args = array(
'posts_per_page' => 5, // 表示件数を半角数字で指定します(この場合は5件表示されます)
'post_type' => 'post',
'post_status' => 'publish'
);
$posts_array = get_posts($args);
$html = '<ul>'; // HTMLタグは状況に応じて変えてください。
foreach($posts_array as $post): // loop開始
setup_postdata($post);
$html .= '<li><a href="'.get_permalink().'">'; // 記事URLを取得
$html .= '<time datetime="'.get_the_date( DATE_W3C ).'">'.get_the_date().'</time>'; // 投稿日を表示
$html .= '<p>'.get_the_title().'</p>'; // タイトルを表示
$html .= '</a></li>';
endforeach; // loop終了
$html.='</ul>';
wp_reset_postdata();
return $html;
}
add_shortcode('my_post_list', 'sample_post_list'); // ('ショートコード名', '変数名')
上のコードは、シンプルに「投稿日」「タイトル」のみ取得して表示するサンプルコードです。
トップページにさりげなく新着のお知らせを数件表示する場合や、ブログのサイドバーウィジェットと相性が良いと思います。
アイキャッチ画像を表示する場合は?
下のサンプルソースコードを「//投稿日を表示(Line:14)」の上などに入れて表示させてください。
/*アイキャッチ画像を表示 */
$html .= '<img src="'.get_the_post_thumbnail_url().'" alt="'.get_the_title().'">';
定義したショートコードをWordPress管理画面内で使う
WordPress(ワードプレス)のテキストエディタやウィジェットなど、ショートコードを読み出しできる編集パネルに下のプログラムを記述します。
[my_post_list]
これでショートコードを貼り付けた箇所に投稿一覧を表示させることができます。
あとは、CSSでデザインやレイアウトなど自由に作り込んでいってくださいね。