レンタルサーバー選びの迷いを解決!全力サポートします

Google or AdMax Promotion (srv)

WordPressで「URLクエリ文字列(?key=xxx)」の定義と値の受け渡し検証

WordPressでは初期状態で様々な「URLクエリ文字列(?key=xxx)」が有効になっています。
この「URLクエリ文字列」に対して独自のキーを追加して、
ショートコードなどで利用ができればURLを介して値や状態の受け渡しができるようになります。
ここでは実際に独自の「URLクエリ文字列」を追加して動かす流れについてご紹介します。

WordPressで「URLクエリ文字列(?key=xxx)」の値受渡とURL置換検証

検索で使う「?s=xxx」や投稿や固定ページを示す「?p=xxx」などはよく目にするものです。

WordPressに初期状態で定義されているURLクエリ文字列

普段目にしているものもあれば気にしたことがないものまであります。
一般的な「URLクエリ文字列」のパターンとして投稿などに絡むものは以下の様なものがあります。

記事なら「?p=xx」、カテゴリなら「?cat=xx」、タグなら「?tag=xx」
年月別なら「?m=xx」、検索結果なら「?s=xx」と、いった感じです。

またこうしたWordPressで使用されるクエリ文字列は、
Codexを参照して知る事ができます。

クエリ変数(Public)

  • attachment
  • attachment_id
  • author
  • author_name
  • cat
  • category_name
  • comments_popup
  • day
  • error
  • feed
  • hour
  • m
  • minute
  • monthnum
  • name
  • p
  • page_id
  • paged
  • pagename
  • post_parent
  • post_type
  • preview
  • second
  • static
  • subpost
  • subpost_id
  • tag
  • tag_id
  • tb
  • w
  • year

以下の一覧をご覧ください。

$public_query_vars = array(‘m‘, ‘p‘, ‘posts’, ‘w’, ‘cat‘, ‘withcomments’, ‘withoutcomments’, ‘s‘, ‘search’, ‘exact’, ‘sentence’, ‘debug’, ‘calendar’, ‘page’, ‘paged’, ‘more’, ‘tb’, ‘pb’, ‘author’, ‘order’, ‘orderby’, ‘year’, ‘monthnum’, ‘day’, ‘hour’, ‘minute’, ‘second’, ‘name’, ‘category_name’, ‘tag‘, ‘feed’, ‘author_name’, ‘static’, ‘pagename’, ‘page_id’, ‘error’, ‘comments_popup’, ‘attachment’, ‘attachment_id’, ‘subpost’, ‘subpost_id’, ‘preview’, ‘robots’, ‘taxonomy’, ‘term’, ‘cpage’, ‘post_type’);

(抜粋引用)WordPress Query Vars – WordPress Codex 日本語版
(Evernote)https://www.evernote.com/shard/s380/u/0/sh/019219b6-e1ae-49b3-8dce-7c8c131f0341/83d0e8bba0d24c0a356acd1b8add4513

 

URLクエリ文字列を独自に定義する

上記を見ての通り「URLクエリ文字列」は「$public_query_vars」という変数に、
配列で格納されていることが分かります。

この配列に対して、独自でキーにしたい文字列を追加する事で、
好きな「URLクエリ文字列」を追加する事ができます。

追加の手順については、以下のように書かれています。

カスタムクエリ変数

URL に付け加えるカスタムクエリ変数(例: add_query_arg() を使った “http://example.com/some_page/?my_var=foo” など)を使用するには、それらを WP_Query が扱えるパブリック・クエリ変数に追加する必要があります。パブリック・クエリ変数は WP_Query のインスタンスが作成される際に作られますが、幸運なことに実際に WP_Query の $query_vars プロパティにデータを投入する前には ‘query_vars’ フィルタが通されます。

つまり、新しい独自クエリ変数を WP_Query に含めるには ‘query_vars’ フィルタにフックしてクエリ変数を $vars 配列に追加すればよいのです。フィルタ関数でその配列を返すようにしましょう。以下をご覧ください。

  • WP_Query::get() を参照。
  • グローバル (object$wp_query を使用。

(引用) カスタムクエリ変数|関数リファレンス/get query var – WordPress Codex 日本語版
(Evernote) https://www.evernote.com/shard/s380/u/0/sh/f3a1cd4d-bccf-4fbd-a036-7ce0db060b85/05ae790c789e6bb8116898cf34270774

 

初期状態のパブリッククエリ変数を確認してみる

ちなみにどのようなパブリック変数が定義されているのかは、
「$GLOBALS」というサーバー変数を見れば確認ができます。

抜粋ですが、以下のように確認できます。

 

カスタムクエリ変数(URLクエリ文字列)を追加する

では、次に実際ヘルプ記載の通り、カスタムクエリ変数を追加します。

functions.phpに対して、以下のような記述を追加します。(ヘルプそのまま)

先ほど同様に値を確認します。
「$GLOBALS」というサーバー変数の「public_query_vars」の中に、
「my_var」が追加されています。(要素48、53行目)

実際に「public_query_vars」の値を以下で表示しています。

 

これでグローバルカスタムクエリ変数は追加されました。

では、実際の値の受け渡しについては以下でご紹介します。

 


プロモーション

Google or AdMax Promotion (srvpos)

公開日:

コンテンツナビ
すべて展開 | すべて省略

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

QRコードからもこのURLを開けます。