WordPressの新着情報表示にカスタム投稿タイプを含める方法

WordPressの新着情報表示にカスタム投稿タイプを含める方法

@junirock78 さんが、ツイッターでカスタム投稿タイプも含めた新着情報を表示する方法を質問されていたので、おせっかいかとは思いつつ話の輪に加わってみました。

方法としては、テンプレートで query_posts または get_posts などを使って取得する方法が一般的だとは思いますが、これだとデータベースへの問い合わせが新たに発生してしまいます。
トップページでの表示であれば、もともと最新の投稿を取得してきていますから、これにカスタム投稿タイプを含めるようにしてしまえば、新たなデータベースへの問い合わせもなく、パフォーマンス的にも良くなりますね。

では、どうすれば良いかというと、データベースへの問い合わせが発生する直前に、トップページだったら(最新の投稿を表示している = is_home() がtrue)、リクエストの条件にカスタム投稿タイプの指定を追加してあげれば、あとは WordPress が自動でカスタム投稿タイプを含めた最新情報を取ってきてくれます。
ここらへんが WordPress の便利なところですよね。

これを実際のコードにするとこれだけ。
テーマのfunctions.phpに追加してもらえれば。
サンプルは固定ページを加えた表示にするものなので、投稿タイプの設定は、arrayの中の値をカスタマイズください。

function chample_latest_posts( $wp_query ) {
	if ( is_home() && ! isset( $wp_query->query_vars['suppress_filters'] ) ) {
		$wp_query->query_vars['post_type'] = array( 'post', 'page' );
	}
}
add_action( 'parse_query', 'chample_latest_posts' );

条件が決まっているなら、投稿タイプの設定を自動化することも可能ですぞ。(page-attributes のサポートをしていないとか)

注意点として、他に query_posts や get_posts を使っている箇所がある場合、影響が出る可能性があります。その場合は、 $wp_query->query_vars の内容で分岐条件を追加してあげて下さい。

「WordPressの新着情報表示にカスタム投稿タイプを含める方法」への3件のフィードバック

コメントを残す

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