Gewusst wie: Untersuchen globaler Variablen in WordPress

22

Menschen sind oft verwirrt darüber, wie sie Daten aus globalen Objekten / Variablen abrufen können

Frage: Wie können Sie globale Variablen untersuchen?


Dieses Q wurde geschrieben, weil es hier in WA ziemlich oft gebraucht wird. Ich wollte es nur als Favorit haben, um hierher zu verlinken (die Leute schauen sich oft nicht die wichtigsten Links an).

Sie können das Beispiel jederzeit ändern, wenn etwas nicht stimmt oder Sie der Meinung sind, dass in der Erklärung etwas fehlt. Wenn Sie weitere nützliche Informationen hinzufügen möchten, fügen Sie diese bitte als einzelne Antwort hinzu. Vielen Dank.

kaiser
quelle
Dies sollte ein Community-Wiki sein oder in eine Frage umformuliert werden.
T31OS
@ t31os Könntest du das machen? Ich weiß nicht einmal, wo ich ein Community-Wiki finden würde ...
Kaiser
Ich denke, ich konnte früher in der Beta, jetzt jedoch nicht, dass die Anforderungen an die Repräsentanten höher sind. Möglicherweise muss ein Benutzer mit höheren Repräsentanten die Frage als Wiki markieren, vielleicht können @Rarst oder @MikeSchinkel ..
t31os 25.03.11
@MikeSchinkel @Rarst @Jan Fabry - Push
kaiser

Antworten:

12

Oder wenn Sie faul sind, installieren Sie einfach das Debug Bar Plugin.

Sie fügt der Administrationsleiste eine Schaltfläche hinzu, die beim Klicken ein Fenster mit allen nützlichen Informationen anzeigt, einschließlich Verfallsmitteilungen, WP_Query-Variablen und einem SQL-Abfrageprotokoll.

scribu
quelle
Absolut richtig. Es wird Ihnen jedoch nicht erklären, wie Sie auf globale Variablen / Objekte zugreifen und wie Sie Teile daraus herausholen.
Kaiser
Btw: Können Sie uns kurz erklären, wie das funktioniert? Ich denke, es könnte / würde wirklich helfen, diese "How-to-Basics" -AQ zu erweitern.
Kaiser
@kaiser: Fertig.
Scribu
4

So überprüfen Sie die Daten:

Verwenden Sie diese Option, um eine Einsicht darüber zu erhalten, was Sie aus der aktuellen Anfrage / wp_query verwenden können.

function inspect_wp_query() 
{
  echo '<pre>';
    print_r($GLOBALS['wp_query'])
  echo '</pre>';
}
// If you're looking at other variables you might need to use different hooks
// this can sometimes be a little tricky.
// Take a look at the Action Reference: http://codex.wordpress.org/Plugin_API/Action_Reference
add_action( 'shutdown', 'inspect_wp_query', 999 ); // Query on public facing pages
add_action( 'admin_footer', 'inspect_wp_query', 999 ); // Query in admin UI

Übrigens:

    // this:
    global $wp_query;
    $wp_query;
    // is the same as
    $wp_query;
    // and as this:
    $GLOBALS['wp_query'];

// You can do this with each other global var too, like $post, etc.

So erhalten Sie die Daten tatsächlich:

// Example (not the best one)
(Object) WP_Query -> post (stdClass) -> postdata (Array)

// How to get the data:
// Save object into var
$my_data = new WP_Query; // on a new object
// or on the global available object from the current request
$my_data = $GLOBALS['wp_query'];

// get object/stdClass "post"
$my_post_data = $my_data->post;
// get Array
$my_post_data = $my_data['post'];


Beispiele
Alle Namen der Seitenleiste auflisten?
(Erstellen Sie ein Dropdown- / Auswahlobjekt mit allen Seitenleisten im global $wp_registered_sidebars)

kaiser
quelle
0

Je nachdem, wo die Skripte geladen und die endgültige Ausgabe wiedergegeben werden, sind einige der oben genannten Variablen möglicherweise nicht vorhanden. Wenn Sie eine ziemlich umfassende, vielleicht etwas extreme Sichtweise wünschen, versuchen Sie Folgendes:

var_dump($GLOBALS);

var_dump ist auch nett, wenn man den Typ und das Format der Daten ein wenig mitteilt.

Jahmic
quelle