it-swarm.com.de

Verwenden des query_vars-Filters

Ich versuche, einen Link vom WP -Administrator aus zu erstellen, um Beiträge auf eine bestimmte Art und Weise anzuzeigen. Die URL-Struktur hierfür ist example.com/post123/?my-preview=456

/post123/ ist der reguläre Permalink für einen Beitrag. Mit dem ?my-preview=456 kann ein Abschnitt dieses Beitrags Informationen abrufen, die auf dem my-preview-Wert basieren.

Ich verstehe, dass WP $_GET -Parameter aus der URL entfernt, also habe ich versucht, add_filter('query_vars','my_query_vars'); und zu verwenden

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

In dem Abschnitt, in dem ich diesen Wert abrufen muss, habe ich versucht, Folgendes zu verwenden:

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

Selbst bei einer URL wie im obigen Beispiel ist das Paar 'my-preview' im Array $ wp_query-> query_vars nirgends zu finden.

Führe ich nicht die richtigen Schritte aus, um eine zusätzliche query_var für die spätere Verwendung zu registrieren? Wenn ja, warum bleibt es dann nicht?

EDIT: Ich habe auch versucht: add_action('init', 'add_query_vars');
mit

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

und wp_die(var_dump(get_query_var('my-preview'))); gibt string(0) ""

3
Josh Levinson

Der Abfrage-VAR-Filter ist für das, was Sie hier tun, nicht erforderlich, da Sie ihn nicht in einer Abfrage verwenden. Wenn Sie es der URL als GET-Parameter hinzufügen, wird es nicht im Array der Abfragevariablen angezeigt, da es keinen Mechanismus gibt, der eine GET-Variable in eine Abfragevariable konvertiert. Sie haben lediglich sichergestellt, dass sie nicht entfernt wird sofern dies der Fall ist) zur Abfrage hinzugefügt.

Solange die GET-Variable eindeutig ist und nicht von WordPress reserviert wird, sollte nichts die Einstellung verhindern und dann auf eine GET-Variable über normale Mittel zugreifen: $_GET['my-preview'].

5
Milo