2022年04月25日

WP関数:set_query_var()

この関数の説明

WP関数の set_query_var() は、メインクエリquery_posts()の検索条件を変更する関数です。

これを利用する事により、抽出したデータの並び順を変更したり、抽出方法を変更する事ができます。

 メモ

WordPressでは、DBから投稿や固定ページ情報を取り出し関数としてquery_posts()を利用しています。

これをメインクエリを呼びます。

一方、ユーザがDBから投稿や固定ページ情報を取り出す場合はWP_Query()を利用します。

これをサブクエリと呼びます。

 


関数

set_query_var$var$value )

 


パラメータ

$var文字列必須

クエリ変数のキー

初期値: なし

詳細は1項のQueryの主要なキーと値を参照して下さい。

 

$value(文字列|整数|配列)(必須)

クエリ変のキーにセットする値。

初期値: なし

 


事例

①下記はメインクエリを実行する条件を下記仕様に変更する命令です。

・カテゴリ表示の時はタイトル名が小さい順に表示させる。

・検索ページは、投稿だけを検索させる。

function my_query() {
	// カテゴリ表示はタイトル名が小さい順に表示させる
	if(is_category()){
		set_query_var( 'order', 'asc' );
		set_query_var( 'orderby', 'title' );
	}
	// 検索結果ページは投稿文書だけを対象にする
	if(is_search()){
		set_query_var( 'post_type', 'post');
	}
}
add_action( 'pre_get_posts', 'my_query' );

■3~6行目

抽出した投稿や固定ページは、作成日が新しい物から並べるのがデフォルトです。

これをカテゴリ表示の時だけは、タイトルが小さい物から並べる様に指定しています。

■8~10行目

検索のデフォルトは投稿と固定ページを抽出します。

これを投稿だけに抽出する様に変更しています。

■12行目

アクション:pre_get_posts は、メインクエリを実行する時にフックされるアクションフックです。

 

1.Queryの主要なキーと値

下記は Queryの主要なキーと値を解説しています。元に戻る

区分 キー名 タイプ 説明
抽出方法
'post_type' 文字列 抽出する文書タイプを指定します。

説明
'post' 投稿を抽出します
'page' 固定ページを抽出します
'any' 投稿と固定ページを抽出します default
'××x'' カスタム投稿のxxxを抽出します
'category_name'
文字列 指定したカテゴリのスラッグ名の投稿を抽出します。
'cat' 整数 指定したカテゴリIDの投稿を抽出します。
'tag' 文字列 指定したタグ名の投稿を抽出します。
'tag_id'
整数 指定したタグIDの投稿を抽出します。
's' 文字列 指定した検索ワードでヒットする投稿を抽出する
'post_in' 配列 リストしたい文書IDを配列で指定します。
'post__not_in' 配列 リストから省きたい文書IDを配列で指定します。

現在の投稿をリストから省きたい場合は下記を指定します。

'post__not_in' => array(get_the_ID()),

並び順 'orderby' 文字列 対象リストの並び順を指定します。

説明
'date' 作成日順 default
'modified' 更新日順
'id' 投稿ID順
'title' タイトル名順
'rand' ランダム表示
'meta_value_num'
'meta_key'の値でソートします。
'post_in' 'post__in' パラメータの投稿IDの順
'meta_key' 文字列 カスタムフィールドの名前を指定します。
'order' 文字列 昇順/降順を指定します。

説明
'desc' 降順 (大きい、新しい) default
'asc' 昇順(小さい、古い順)
ページ
制御
'posts_per_page' 整数 1ページに表示する個数を指定します。

総てを取り出す場合は-1を指定します。

指定しない場合は[設定→表示設定]で指定している値になります。

'paged' 整数 表示を開始するページ番号を指定します。

デフォルトは1です。

アクションフック&関数
  • admin_init
  • admin_menu
  • after_setup_theme
  • customize_register
  • manage_pages_custom_column
  • manage_posts_custom_column
  • pre_get_posts
  • save_post
  • widgets_init
  • wp_enqueue_scripts
  • wp_head
  • add_editor_style()
  • add_post_type_support()
  • add_theme_support()
  • do_action()
  • get_post()
  • get_theme_mod()
  • register_nav_menu()
  • register_post_type()
  • register_sidebar()
  • register_taxonomy()
  • register_widget()
  • remove_action()
  • remove_editor_styles()
  • remove_theme_support()
  • set_post_thumbnail_size()
  • set_query_var()
  • show_admin_bar()
  • unregister_nav_menu()
  • unregister_widget()
  • wp_enqueue_script()
  • wp_enqueue_style()