ウィジェット内でショートコードを使用する

wordpressのウィジェットにオススメの投稿一覧とか新着記事一覧とかを
プラグインを使わずに表示させたい場合、テンプレートを作ってショートコードを読み込むっていうのをよくやります。
でも投稿画面のようにエディタにショートコード書いても認識してくれません。

そういうときはこれ。functions.phpにこれを追加するだけ。

add_filter('widget_text', 'do_shortcode' );

あとはショートコードを作る。
例えば、loop-new.phpみたいなファイルをつくってそれを読み込ませる場合、functions.phpに

function loop_new() {
  ob_start();
  get_template_part('loop-new');
  return ob_get_clean();
}
add_shortcode('new', 'loop_new');

とか書いて、ウィジェットのカスタムHTMLに'[new]’って書いてあげれば読み込めます。

たとえばloop-new.phpは新着5件表示する場合、

<ul>
	<?php
		$wp_query = new WP_Query();
			$param = array(
				'posts_per_page' => '5', //表示件数
				'post_type' => 'post', //投稿タイプ
				'post_status' => 'publish', //公開中の記事
				'orderby' => 'ID', //ID順で並べる
				'order' => 'DESC'
				);
			$wp_query->query($param);
				if($wp_query->have_posts()): ?>
	<?php while($wp_query->have_posts()) : $wp_query->the_post(); ?>
	<li>
		<?php if (has_post_thumbnail()) : ?><!-- アイキャッチ画像があればリンク付きで表示 -->
			<a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('thumbnail'); ?></a>
		<?php endif ; ?>
			<div><a href="<?php the_permalink(); ?>">
				<?php the_title(); ?>
			</a></div>
	</li>
	<?php endwhile; ?>
	<?php endif; ?>
	<?php wp_reset_query(); ?>
</ul>

って書いてあげれば、デフォルトの新着表示やプラグインに頼らずすきな内容で新着記事が表示できますね。
よく使うやつなのでおぼえがき。

●参考記事
WordPressのウィジェットでショートコードを使う方法add_filter

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


top