制作の現場から  
  カスタム投稿タイプを検索やフィードに加える方法
2018
18
Mar

カスタム投稿タイプを検索やフィードに加える方法

ワードプレスではカスタム投稿タイプという便利なものがあります。
デフォルトでは検索結果にカスタム投稿タイプの値はは表示されません。
同様にフィードにも含まれません。

これはカスタム投稿タイプがプラグインなどで使われることが多いからです。
例えば、最初から全てのカスタム投稿タイプが検索結果に含まれてしまうと、
不要なものまで表示されるという不具合が生まれます。

このようなことを避けるためにカスタム投稿タイプを取り入れた場合は工夫が必要です。
私がよく使うものだけ上げておきます。

いずれも pre_get_posts にフックしますのでまとめました。

カスタム投稿タイプをmenusとした場合を前提に書いています。

 

functions.php


add_action ( 'pre_get_posts', 'my_pre_get_posts' );
function my_pre_get_posts( $query ) {
	if ( ! is_admin() && $query->is_main_query() ) {

		//メインクエリーをカスタム投稿タイプに変更する
		if ( is_front_page() ) {
			$query->set( 'post_type','menus' );
			return $query;
		}
		
		//検索にカスタム投稿タイプを含める
		if ( is_search() ) {
			$query->set( 'post_type', array ( 'post', 'menus' ) );
			return $query;
		}
		
		//フィードにカスタム投稿タイプを含める
		if ( is_feed() ) {
			$post_type = $query->get( 'post_type' );
			if ( empty( $post_type ) ) {
				$query->set( 'post_type', array( 'post', 'menus' ) );
				return $query;
			}
		}
	}
}

requestにフックする方法もあるようです。Plugin API/Filter Reference/request

 

top