web-dev-qa-db-ja.com

Query_varsフィルタの使用

特定の方法で投稿を表示するためにWP管理者からリンクアウトしようとしています。このURL構造はexample.com/post123/?my-preview=456です。

/post123/は投稿に対する通常のパーマリンクです。 ?my-preview=456は、その投稿の一部がmy-previewの値に基づいて情報を取得することを可能にします。

WPがURLから$_GETパラメータを削除することを私は理解しているので、私はadd_filter('query_vars','my_query_vars');

function my_query_vars($query_vars){
    $query_vars[] = 'my-preview';
    return $query_vars;
}

私がその値を取得する必要がある実際のセクションで、私は使用してみました:

global $wp_query;
var_dump($wp_query->query_vars);

上の例のようなURLであっても、 'my-preview'ペアは$ wp_query-> query_vars配列のどこにもありません。

後で使用するために追加のquery_varを登録するための正しい手順を実行していませんか。私がそうであるならば、なぜそれは固執しませんか?

編集:私も試してみました:add_action('init', 'add_query_vars');
あり

function add_query_vars() {
    global $wp;
    $wp->add_query_var('my-preview');
}

そしてwp_die(var_dump(get_query_var('my-preview')));string(0) ""を与える

3
Josh Levinson

クエリ変数フィルターは、クエリで使用していないため、ここで行っていることには不要です。 GETパラメータとしてURLに追加しても、クエリ変数の配列には表示されません。GET変数をクエリ変数に変換するメカニズムはないため、削除されないだけですクエリに追加された場合

GET varが一意であり、WordPressによって予約されていない限り、通常の方法で$_GET['my-preview']を設定してGET varにアクセスすることを妨げるものはありません。

5
Milo