Câu hỏi:
Tôi từng biết một hàm có chức năng hiển thị lại chính xác code SQL được sử dụng trong một vòng lặp chẳng hạn. Nhưng giờ tôi không thể nhớ nó.
Ai đó có thể nói cho tôi biết hàm đó là hàm gì không?
Keith Donegan
Câu trả lời chính xác nhất
Xin chào @Keith Donegan:
Nếu tôi không hiểu nhầm câu hỏi của bạn thì tôi nghĩ đây là cái bạn đang tìm kiếm?
<?php echo $GLOBALS[‘wp_query’]->request; ?>
$wp_query là một biến toàn cục chứa truy vấn hiện tại đang chạy vòng lặp. Nếu bạn chạy code trên trong khi vòng lặp vẫn đang hoạt động hoặc thậm chí ngay sau vòng lặp, nó sẽ cho bạn SQL từ vòng lặp. Hãy chắc chắn bạn kiểm tra nó trước khi cho phép mọi thứ chạy và chạy lại query_posts().
Câu trả lời của MikeSchinkel
Làm thế nào để lấy các truy vấn của $wpdb? $GLOBALS[‘wpdb’]->request không hoạt động. – mpsbhat
Cái này hoạt động cả đối với truy vấn tùy chỉnh (custom query), $my_query = new WP_Query([ /* …some args… */ ]); => $my_query->request – jave.web
Nếu bạn chạy một truy vấn dựa trên WP_Query, nó sẽ là cái này:
$customPosts = new WP_Query($yourArgs);
echo “Last SQL-Query: {$customPosts->request}”;
Câu trả lời của Till
Nếu bạn chỉ quan tâm đến các vòng lặp thì đây là cái mà tôi thường dùng:
add_filter( ‘posts_request’, ‘dump_request’ );
function dump_request( $input ) {
var_dump($input);
return $input;
}
Câu trả lời của Rarst
Hãy xem câu trả lời này: Best Collection of Code for your functions.php file
Sau đó thêm ?debug=sql vào các WP URL, và nó sẽ trả về danh sách đầy đủ các truy vấn đã được chạy.
Câu trả lời của Denis de Bernardy