みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
WordPressのショートコードで、数件の新着記事をアイキャッチ画像つきで表示する機能の実装を目指しています。
前回はこちらの記事です。
新しい順に5件の記事についてその記事タイトルを表示する方法についてお伝えしました。
今回は、各記事について別の情報も取得して表示してみましょう。
WordPressショートコードで記事のパーマリンクと投稿日を取得する方法です。
では行ってみましょう!
記事タイトルのみを表示するプログラムのおさらい
まず前回のプログラムのおさらいから行きましょう。
最新の5件についてその記事タイトルを表示するショートコードです。
//記事タイトルを出力するprint_post_name
function print_post_name($atts){
$retHTML='';
global $post;
$myposts = get_posts();
foreach($myposts as $post):
setup_postdata($post);
$retHTML.=the_title('','',false).'
';
endforeach;
wp_reset_postdata();
return $retHTML;
}
add_shortcode('list','print_post_name');
ちょっとややこしいですが、関数print_post_nameに関しては
- グローバル変数$postを使う宣言
- 最新5件の投稿を配列で取得し$mypostsに格納
- 取得した全ての投稿をグローバル変数$postとして繰り返し
- $postを現在の記事としてセット
- 記事タイトルを取得して生成するHTML$retHTMLに追加
- グローバル変数$postをリセット
- $retHTMLをリターン
という動きをしております。
今回の目標である、パーマリンクの取得と投稿日の取得ですが、このプログラムの流れにそのまま乗っけることができます。
8行目の次あたりにそれぞれ入れてあげる形です。
では、行ってみましょう!
ショートコードでパーマリンクと投稿日を取得する
では、パーマリンクと投稿日を取得する際に使用する関数について解説をしていきます。
get_permalinkで投稿のパーマリンクを取得する
記事のパーマリンクを取得する場合はget_permalinkを使います。
取得したい投稿または固定ページの記事のIDをパラメータ$idとして指定をしてあげればその記事のパーマリンクを取得しますが、省略した場合は現在の投稿のパーマリンクを取得します。
今回はループ内で現在の投稿を取得すれば良いので省略してOKですね。
get_the_dateで投稿日を取得する
記事の投稿日を取得する場合はget_the_dateを使います。
それぞれのパラメータは
- $format: 日付の書式(既定値はWordPressで設定されている日付フォーマット)
- $post_id: 記事のID(既定値は現在の投稿のID)
となっています。
パラメータは両方とも省略可能ですね。
日付の書式についてはPHPで定められている以下のパラメータ文字列が使用可能です。
種別 | 記号 | 表示内容 | 備考 |
---|---|---|---|
d | 日 | 日。先頭にゼロをつける。 | 01 から 31 |
j | 日 | 日。先頭にゼロをつけない。 | 1 から 31 |
S | 日 | 英語形式の序数を表す2文字のサフィックス。 | 1stや 2nd , 3rd , 15thなどに含まれる、st, nd, rd または th。 |
m | 月 | 数字。先頭にゼロをつける。 | 01 から 12 |
n | 月 | 数字。先頭にゼロをつけない。 | 1 から 12 |
F | 月 | フルスペルの文字。 | January から December |
M | 月 | 3文字形式。 | Jan から Dec |
Y | 年 | 4桁の数字。 | 例: 1999 または 2003 |
y | 年 | 2桁の数字。 | 例: 99 または 03 |
記事タイトル、パーマリンク、投稿日を表示するショートコードのプログラム
プログラムはこちらです。
//記事タイトルをリンク付きで出力するprint_post
function print_post($atts){
$retHTML='';
global $post;
$myposts = get_posts();
foreach($myposts as $post):
setup_postdata($post);
$retHTML.=''.the_title("","",false).'
';
$retHTML.=get_the_date().'
';
endforeach;
wp_reset_postdata();
return $retHTML;
}
add_shortcode('list','print_post');
前回と変更になったのは、8行目と9行目だけですね。
実行結果
上記プログラムをfunctions.phpに追加し保存した上で、ショートコードを使用してみるとこちらのような表示になります。
例えば、9行目を以下のように変更すると
$retHTML.=get_the_date('Y年n月j日').'
';
ショートコードの表示は
というように表記が変更になります。
まとめ
WordPressショートコードで記事のパーマリンクと投稿日を取得する方法についてお伝えしました。
get_permalinkで記事タイトルを、get_the_dateで記事の投稿日をそれぞれ取得することができました。
それほど難しくはありませんね!
次回以降で記事の抜粋と作成者を取得する方法をお伝えしたいと思います。
どうぞお楽しみに!
連載目次:WordPressのショートコードで新着記事を表示する
初心者でもWordPressショートコードを自作することを目標にして、数件の新着記事をアイキャッチ画像つきで表示する機能を題材として連載形式でショートコードの作り方をお伝えしていきます。- WordPressショートコードとは何か、自作する際に注意すべき3つの事
- WordPressで最も簡単なショートコードの作り方を初心者向けにとっても丁寧に説明します
- WordPressで引数ありのショートコードを作成する方法をとっても丁寧に説明します
- WordPressのショートコードでforeach文で配列内のテキストを全て表示する方法
- WordPressショートコードで複数の記事タイトルを表示する方法
- WordPressショートコードで記事のパーマリンクと投稿日を取得する方法
- WordPressのショートコードで記事の抜粋・リンクつきの投稿の作成者も表示する
- WordPressのショートコードでアイキャッチ画像を表示する方法