Instrukcje: sprawdzanie zmiennych globalnych w WordPress

22

Ludzie są często zdezorientowani, jak uzyskać dane z globalnych obiektów / zmiennych

Pytanie: W jaki sposób możesz sprawdzać zmienne globalne?


To Q zostało napisane, ponieważ jest dość potrzebne tutaj, w WA. Chciałem po prostu mieć to jako ulubiony link tutaj (ludzie często nie oglądają linków github gist).

Zmodyfikuj przykład, jeśli coś jest nie tak lub uważasz, że w wyjaśnieniu czegoś brakuje. Jeśli chcesz dodać inne przydatne rzeczy, dodaj je jako jedną odpowiedź. Dziękuję Ci.

kaiser
źródło
To powinna być wiki społeczności lub przeformułowane na pytanie.
t31os
@ t31os Czy możesz to zrobić? Nie wiem nawet, gdzie znalazłbym wiki społeczności ...
KAISER
Myślę, że wcześniej mogłem być w fazie beta, ale nie teraz wymagania dotyczące powtórzeń są wyższe, być może będę musiał poprosić użytkownika z wyższym przedstawicielem, aby oznaczył pytanie jako wiki, może @Rarst lub @MikeSchinkel może ..
t31os
@MikeSchinkel @Rarst @Jan Fabry - push
kaiser

Odpowiedzi:

12

Lub, jeśli jesteś leniwy, po prostu zainstaluj wtyczkę Debug Bar .

Dodaje przycisk do paska administratora, który po kliknięciu wyświetla panel z wszelkimi przydatnymi informacjami, w tym powiadomieniami o wycofaniu, zmiennymi WP_Query i dziennikiem zapytań SQL.

scribu
źródło
Całkowita racja. Ale to nie wyjaśni ci, jak uzyskać dostęp do zmiennych / obiektów globalnych i jak wyciągnąć z tego części.
Kaiser,
Btw: Czy możesz po prostu dodać krótkie wyjaśnienie, jak to działa? Myślę, że to może / naprawdę pomogłoby w rozszerzeniu tego „poradnika” - AQ.
kaiser
@kaiser: Gotowe.
scribu
4

Jak sprawdzić dane:

Użyj tego, aby uzyskać wgląd w to, czego możesz użyć z bieżącego żądania / wp_query.

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

Btw:

    // 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.

Jak faktycznie uzyskać dane:

// 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'];


Przykłady
Wymień wszystkie nazwy paska bocznego?
(Wygeneruj rozwijany / wybierz obiekt ze wszystkimi paskami wewnątrz global $wp_registered_sidebars)

kaiser
źródło
0

W zależności od tego, gdzie w trakcie ładowania skryptów i renderowania końcowego wyniku, niektóre z wyżej wymienionych zmiennych mogą nie być obecne. Jeśli chcesz dość szerokiego widoku, być może nieco ekstremalnego, spróbuj:

var_dump($GLOBALS);

var_dump jest również miły w tym, że mówi ci trochę o typie i formatowaniu danych.

Jahmic
źródło