Cara: memeriksa variabel global di WordPress

22

Orang sering bingung tentang cara mendapatkan data dari objek / variabel global

Pertanyaan: Dalam hal apa Anda dapat memeriksa variabel global?


Q ini ditulis karena diperlukan cukup sering di sini di WA. Saya hanya ingin memilikinya sebagai fav untuk link di sini (orang-orang sering tidak melihat github gist links).

Jangan ragu untuk memodifikasi contoh jika ada sesuatu yang salah atau Anda berpikir bahwa penjelasannya hilang. Jika Anda ingin menambahkan hal-hal berguna lainnya, silakan tambahkan masing-masing sebagai satu jawaban. Terima kasih.

kaiser
sumber
Ini harus berupa wiki komunitas, atau diulang menjadi pertanyaan.
t31os
@ t31os Bisakah Anda melakukan ini? Saya bahkan tidak tahu di mana saya akan menemukan wiki komunitas ...
kaiser
Saya pikir saya bisa sebelumnya ketika dalam versi beta, tidak sekarang meskipun, persyaratan rep lebih tinggi, mungkin perlu meminta pengguna rep yang lebih tinggi untuk menandai pertanyaan sebagai wiki, mungkin @Rarst atau @MikeSchinkel dapat ..
t31os
@MikeSchinkel @Rarst @Jan Fabry - push
kaiser

Jawaban:

12

Atau, jika Anda malas, cukup instal plugin Debug Bar .

Itu menambahkan tombol ke bilah admin yang, ketika diklik, mengungkapkan panel dengan semua jenis informasi yang berguna, termasuk pemberitahuan penghentian, variabel WP_Query dan log kueri SQL.

scribu
sumber
Benar-benar tepat. Tetapi itu tidak akan menjelaskan kepada Anda cara mengakses variabel / objek global dan cara mengeluarkan bagian dari itu.
kaiser
Btw: Bisakah Anda menambahkan penjelasan singkat tentang cara kerjanya? Saya kira itu bisa / akan sangat membantu memperluas ini "dasar-dasar bagaimana" -AQ.
kaiser
@kaiser: Selesai.
scribu
4

Cara memeriksa data:

Gunakan ini untuk mendapatkan tampilan wawasan tentang apa yang dapat Anda gunakan dari permintaan / wp_query saat ini.

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.

Cara benar-benar mendapatkan data:

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


Contoh
Daftar semua nama sidebar?
(Hasilkan objek drop down / pilih dengan semua sidebar di dalam global $wp_registered_sidebars)

kaiser
sumber
0

Bergantung pada di mana dalam proses memuat skrip dan rendering hasil akhir, beberapa variabel yang disebutkan di atas mungkin tidak ada. Jika Anda ingin tampilan yang cukup inklusif, mungkin agak ekstrem, coba:

var_dump($GLOBALS);

var_dump juga bagus karena memberi tahu Anda jenis dan format data sedikit.

Jahmic
sumber