Cách: kiểm tra các biến toàn cầu trong WordPress


22

Mọi người thường bối rối về cách lấy dữ liệu từ các đối tượng / biến toàn cục

Câu hỏi: Những cách nào bạn có thể kiểm tra các biến toàn cầu?


Q này được viết bởi vì nó cần khá thường xuyên ở đây tại WA. Tôi chỉ muốn có nó như một fav để liên kết ở đây (mọi người thường không xem qua các liên kết chính của github).

Vui lòng sửa đổi ví dụ nếu có gì đó sai hoặc bạn nghĩ rằng lời giải thích bị thiếu một cái gì đó. Nếu bạn muốn thêm các công cụ hữu ích khác, vui lòng thêm từng câu như một câu trả lời. Cảm ơn bạn.


Đây phải là một wiki cộng đồng, hoặc đọc lại thành một câu hỏi.
t31os

@ t31os Bạn có thể làm điều này? Tôi thậm chí không biết nơi nào tôi sẽ tìm thấy một wiki cộng đồng ...
kaiser

Tôi nghĩ rằng trước đây tôi có thể khi beta, nhưng không phải bây giờ, yêu cầu đại diện cao hơn, có thể cần yêu cầu người dùng đại diện cao hơn đánh dấu câu hỏi là wiki, có thể @Rarst hoặc @MikeSchinkel có thể ..
t31os

@MikeSchinkel @Rarst @Jan Fabry - đẩy
kaiser

Câu trả lời:


12

Hoặc, nếu bạn lười biếng, chỉ cần cài đặt plugin Debug Bar .

Nó thêm một nút vào thanh quản trị, khi được nhấp, sẽ hiển thị một bảng với tất cả các loại thông tin hữu ích, bao gồm các thông báo không dùng nữa, các biến WP_Query và nhật ký truy vấn SQL.


Hoàn toàn đúng. Nhưng nó sẽ không giải thích cho bạn cách truy cập các biến / đối tượng toàn cầu và làm thế nào để lấy các phần ra khỏi nó.
kaiser

Btw: Bạn có thể chỉ cần thêm một lời giải thích ngắn về cách thức này hoạt động? Tôi đoán nó có thể / thực sự sẽ giúp mở rộng "cách làm cơ bản" này -AQ.
kaiser

@kaiser: Xong rồi.
scribu

4

Cách kiểm tra dữ liệu:

Sử dụng điều này để có cái nhìn sâu sắc về những gì bạn có thể sử dụng từ yêu cầu hiện tại / 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.

Làm thế nào để thực sự có được dữ liệu:

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


Ví dụ
Liệt kê tất cả các tên thanh bên?
(Tạo một đối tượng thả xuống / chọn với tất cả các thanh bên trong global $wp_registered_sidebars)


0

Tùy thuộc vào nơi trong quá trình tải tập lệnh và hiển thị đầu ra cuối cùng, một số biến được đề cập ở trên có thể không xuất hiện. Nếu bạn muốn có một cái nhìn bao quát, có lẽ hơi cực, hãy thử:

var_dump($GLOBALS);

var_dump cũng tốt trong đó cho bạn biết loại và định dạng dữ liệu một chút.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.