ボールを蹴りたいシステムエンジニア

ボール蹴りが大好きなシステムエンジニア、ボールを蹴る時間確保の為に時間がある時には勉強する。

【WordPressショートコード】新着記事表示

前回に引き続き、WordPressのショートコード作成。

今回は新着記事を表示するショートコード。

■サンプルコード

function.php
add_shortcode('sidebar-newarrival', 'sidebarNewArrival');
function sidebarNewArrival() {

	$out = "<div class=\"sidebar\">\n";
	$out .= "<dl id=\"\">\n";

	$newslist = get_posts( array(
	                  'posts_per_page' => 5 //取得記事件数
	                 ));
	$out .= "<dl id=\"\">\n";
	global $post;
	foreach ($newslist as $post) {
		setup_postdata($post);
		$cat = get_the_category();
		$catid = $cat[0]->cat_ID;
		$catname = $cat[0]->cat_name;
		$date = date('Y年m月d日', strtotime($post->post_date));
		$out .= "<dt class=\"\">";
		$out .= "<a href=\"" .get_permalink() ."\">" .the_title("","",false) ."</a>&nbsp;&nbsp;<span>" .$catname ."</span>";
		$out .= "</dt>";
		$out .= "<dd>" .the_date("Y年m月d日","","",false) ."</dd>\n";
	}

	$out .= "</dl>\n";
	$out .= "</div>\n";
	return  $out;
}
表示するページ
[sidebar-newarrival]

今回、私はサイドバーに表示する為に作成しましたので、
ウィジェットの「テキスト」にショートコードを貼り付けました。

■ハマった点

タイトルや投稿日の取得用テンプレートタグですが、
引数を指定しないと変数に格納できずそのままページ出力されます。
訳が分からず他のメソッドを使わないといけないのなとか思ったりしてかなりハマりました。
wordpressのドキュメントはちゃんと読まないといけませんね・・

これ
テンプレートタグ/the title - WordPress Codex 日本語版
テンプレートタグ/the date - WordPress Codex 日本語版