みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
WordPressのショートコードで、数件の新着記事をサムネイル画像つきで表示する機能の実装をしているところです。
前回はコチラの記事。
新着記事5件について
- 記事タイトル(リンク付き)
- 公開日
を出力するショートコードを作成しました。
今回は、それに加えて投稿記事の抜粋そしてリンク付きの投稿の作成者も追加で表示してみたいと思います。
記事タイトル(リンク付き)と公開日を表示するショートコードのおさらい
前回作成したプログラムはこちらでした。
//記事タイトルをリンク付きで出力するprint_post function print_post($atts){ $retHTML=''; global $post; $myposts = get_posts(); foreach($myposts as $post): setup_postdata($post); $retHTML.='<a href="'.get_permalink().'">'.the_title("","",false).'</a><br />'; $retHTML.=get_the_date().'<br />'; endforeach; wp_reset_postdata(); return $retHTML; } add_shortcode('list','print_post');
新着記事5件について、リンク付きの記事タイトルとその公開日を表示するショートコードです。
関数print_postの流れとしては
- グローバル変数$postを使う宣言
- 最新の投稿を配列で取得し$mypostsに格納(デフォルトで5件)
- $myposts内の投稿全てについてグローバル変数$postに入れながら繰り返し
- $postを現在の記事としてセット
- 該当記事のパーマリンク、タイトル、公開日を取得して成形しながら$retHTMLに追加
- グローバル変数$postをリセット
- $retHTMLを返す
という流れとなります。
投稿内でショートコード[list]を記述することで、関数print_postを呼び出すことができます。
get_the_excerptで投稿の抜粋を取得する
抜粋に関してですが、WordPressには該当記事の抜粋を取り出す関数が用意されています。
記事の抜粋を取得する際はget_the_excerptを使います。
引数はありませんので、このまま表記すればOKです。
上記プログラムの9行目と10行目の間に以下を挿入します。
$retHTML.=get_the_excerpt().'<br />';
するとショートコード[list]の表示はこのようになります。
だんだんそれっぽくなってきましたね。
get_the_authorで投稿者を取得する
では次に投稿者を表示してみましょう。
記事の投稿者を取得する場合はget_the_authorを使います。
こちらも引数はありません。
上記プログラムの9行目
$retHTML.=get_the_date().'<br />';
を以下のように変更をします。
$retHTML.=get_the_date().' '.get_the_author().'<br />';
こうすると、ショートコード[list]の表示はこちらのようになります。
ちゃんと表示されていますね。
当ブログも執筆陣が充実してきたので、get_the_authorもやりがいがあるというものです。
get_author_posts_urlで作成者アーカイブページのURLを取得
ではさらに、投稿の作成者による記事アーカイブページのURLを取得してみましょう。
リンクすると、その投稿の作成者の記事一覧ページに飛べるようにしたいわけです。
投稿の作成者のアーカイブページURLを取得するにはget_author_posts_urlを使います。
各パラメータは以下の通りです。
- $author_id:投稿作成者のユーザーID(必須)
- $author_nicename:ユーザーのスラッグ(省略可)
ユーザーのスラッグというのは省略できますが、投稿作成者のユーザーIDを取得する必要がありますね。
get_the_author_metaでユーザーに関するデータを取得
その場合は、ユーザー関するデータを取得するget_the_author_metaを使います。
パラメータはこちらです。
- $field:フィールド名
- $userID:ユーザーID。デフォルトでは現在の投稿作成者のID
これで指定したIDのユーザーに関する指定フィールドの値を取得することができます。
フィールドとしては、ユーザー名やそのメールアドレス、表示名から各SNSの設定項目まで各種を指定することができます。
今回はIDが知りたいので、そのまま「ID」とします。
他にどのようなフィールドが使えるかは、以下WordPress Codexでご確認頂ければと思います。
参考 関数リファレンス/get the author meta
投稿の作成者アーカイブページへのリンクを付与
これで材料が揃いましたので、前述にて修正した行
$retHTML.=get_the_date().' '.get_the_author().'<br />';
これをさらに修正して
$retHTML.=get_the_date().' <a href="'.get_author_posts_url(get_the_author_meta('ID')).'">'.get_the_author().'</a><br />';
とします。
これによるショートコード[list]の表示はこちらです。
それぞれのユーザーによる記事アーカイブページへのリンクがバッチリ追加されました。
まとめ
ショートコードを使って投稿記事の抜粋、リンク付きの投稿の作成者を表示する方法についてお伝えしました。
これまでの記事も含めておさらいをしますと、投稿について
- the_title($before, $after, $echo):タイトル
- get_permalink($id):パーマリンク
- get_the_date($format, $post_id):公開日
- get_the_excerpt():抜粋
- get_the_author():作成者
- get_author_posts_url($author_id, $author_nicename):ユーザーのアーカイブページのURL
- get_the_author_meta($field, $userID):ユーザーの各種情報
などで色々と取り出して表示をすることができました。
次回はいよいよアイキャッチ画像を追加で表示する方法についてお伝えしたいと思います。
どうぞお楽しみに!