#
ドキュメント

Document

自分のための備忘録です。

WordPressクエリ

WordPressはパブリッククエリを元にSQLを作成して該当する投稿を取得する。

パブリッククエリ確認

WP::query_varsまたはWP_Query::query_varsにパブリッククエリが格納されている。

以下でクエリを確認できる。

var_dump($GLOBAS['wp_query']->query_vars);
array(63) { ["error"]=> string(0) "" ["m"]=> string(0) "" ["p"]=> int(0) ["post_parent"]=> string(0) "" ["subpost"]=> string(0) "" ["subpost_id"]=> string(0) "" ["attachment"]=> string(0) "" ["attachment_id"]=> int(0) ["name"]=> string(0) "" ["pagename"]=> string(0) "" ["page_id"]=> int(0) ["second"]=> string(0) "" ["minute"]=> string(0) "" ["hour"]=> string(0) "" ["day"]=> int(0) ["monthnum"]=> int(0) ["year"]=> int(0) ["w"]=> int(0) ["category_name"]=> string(0) "" ["tag"]=> string(0) "" ["cat"]=> string(0) "" ["tag_id"]=> string(0) "" ["author"]=> string(0) "" ["author_name"]=> string(0) "" ["feed"]=> string(0) "" ["tb"]=> string(0) "" ["paged"]=> int(0) ["meta_key"]=> string(0) "" ["meta_value"]=> string(0) "" ["preview"]=> string(0) "" ["s"]=> string(0) "" ["sentence"]=> string(0) "" ["title"]=> string(0) "" ["fields"]=> string(0) "" ["menu_order"]=> string(0) "" ["embed"]=> string(0) "" ["category__in"]=> array(0) { } ["category__not_in"]=> array(0) { } ["category__and"]=> array(0) { } ["post__in"]=> array(0) { } ["post__not_in"]=> array(0) { } ["post_name__in"]=> array(0) { } ["tag__in"]=> array(0) { } ["tag__not_in"]=> array(0) { } ["tag__and"]=> array(0) { } ["tag_slug__in"]=> array(0) { } ["tag_slug__and"]=> array(0) { } ["post_parent__in"]=> array(0) { } ["post_parent__not_in"]=> array(0) { } ["author__in"]=> array(0) { } ["author__not_in"]=> array(0) { } ["ignore_sticky_posts"]=> bool(false) ["suppress_filters"]=> bool(false) ["cache_results"]=> bool(true) ["update_post_term_cache"]=> bool(true) ["lazy_load_term_meta"]=> bool(true) ["update_post_meta_cache"]=> bool(true) ["post_type"]=> string(0) "" ["posts_per_page"]=> int(2) ["nopaging"]=> bool(false) ["comments_per_page"]=> string(2) "50" ["no_found_rows"]=> bool(false) ["order"]=> string(4) "DESC" }

例えば paged はページネーション用のパブリッククエリ。

パブリッククエリ取得

コード内でパブリッククエリ取得するには、get_query_varを使用する。

get query var

グローバル $wp_query オブジェクトの WP_Query クラス内の public query variable /en を取得する。

例)ページネーション用のページ番号を取得

get_query_var('paged')

ここでURLとしてはhttps://example.com/page/2の2はパブリッククエリpageではなくpagedの値になる(WordPressの決まり)。

以下は勘違いしやすいので注意。

  • paged:ページネーション用のパブリッククエリ
  • page:一つの投稿を複数に分割(投稿入力域で<!--nextpage-->を入力した場合)した場合の番号

https://wordpress.stackexchange.com/questions/180784/what-is-the-difference-between-paged-and-page

WP::query_vars

例えば http://example.com/sample-page へアクセスした場合、WP::query_varsには以下が設定される。

Array
(
    [page] => 
    [pagename] => sample-page
)

https://wpdocs.osdn.jp/WordPress_Query_Vars

クエリ文字列(上述の通り、$wp_query->query_varsに保存されています)にカテゴリIDの前に-記号をつけた文字列を追加することでそのカテゴリを除外できるという事実を利用しましょう。これがそのコードです。

https://wpdocs.osdn.jp/%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%AF%E3%82%A8%E3%83%AA

WP_Query::query_vars

$query_vars 解析された $query を保持する連想配列。クエリ変数と対応する値の配列。

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query