ฉันกำลังมองหาวิธีการที่ฉันสามารถนับและแสดงข้อความค้นหาทั้งหมดในเว็บไซต์ WordPress ไม่มีใครรู้ว่าถ้ามีปลั๊กอินที่ดี?
มิฉะนั้นมันจะเป็นวิธีการตรวจสอบแบบสอบถามบนคอนโซลเพราะฉันทำงานกับคอนโซลมาก
ฉันกำลังมองหาวิธีการที่ฉันสามารถนับและแสดงข้อความค้นหาทั้งหมดในเว็บไซต์ WordPress ไม่มีใครรู้ว่าถ้ามีปลั๊กอินที่ดี?
มิฉะนั้นมันจะเป็นวิธีการตรวจสอบแบบสอบถามบนคอนโซลเพราะฉันทำงานกับคอนโซลมาก
คำตอบ:
คุณสามารถวางบล็อคของรหัสนี้ในfunctions.php
ไฟล์ธีม WordPress ที่ใช้งานอยู่ในปัจจุบัน:
function wpse_footer_db_queries(){
echo '<!-- '.get_num_queries().' queries in '.timer_stop(0).' seconds. -->'.PHP_EOL;
}
add_action('wp_footer', 'wpse_footer_db_queries');
บล็อกของโค้ดด้านบนจะแสดงความคิดเห็น HTML ในส่วนท้ายของธีมของคุณ (ก่อนหน้า</body>
และ</html>
มีจำนวนการสืบค้นฐานข้อมูลและวิธีบันทึกที่พวกเขาใช้ในการดึงข้อมูล
@toscho
's คำตอบ
เพิ่ม ...
define( 'SAVEQUERIES', TRUE );
... เพื่อคุณwp-config.php
และตรวจสอบที่$wpdb->queries
shutdown
นั่นคือเบ็ดล่าสุดและอันเดียวหลังจากนั้นไม่มีการสืบค้น นอกจากนี้ยังใช้งานได้wp-admin/
เช่นกัน
โค้ดตัวอย่างเป็นปลั๊กอิน:
<?php
/**
* Plugin Name: T5 Inspect Queries
* Description: Adds a list of all queries at the end of each file.
*
* Add the following to your wp-config.php:
define( 'WP_DEBUG', TRUE );
define( 'SAVEQUERIES', TRUE );
*/
add_action( 'shutdown', 't5_inspect_queries' );
/**
* Print a list of all database queries.
*
* @wp-hook shutdown
* @return void
*/
function t5_inspect_queries()
{
global $wpdb;
$list = '';
if ( ! empty( $wpdb->queries ) )
{
$queries = array ();
foreach ( $wpdb->queries as $query )
{
$queries[] = sprintf(
'<li><pre>%1$s</pre>Time: %2$s sec<pre>%3$s</pre></li>',
nl2br( esc_html( $query[0] ) ),
number_format( sprintf('%0.1f', $query[1] * 1000), 1, '.', ',' ),
esc_html( implode( "\n", explode(', ', $query[2] ) ) )
);
}
$list = '<ol>' . implode( '', $queries ) . '</ol>';
}
printf(
'<style>pre{white-space:pre-wrap !important}</style>
<div class="%1$s"><p><b>%2$s Queries</b></p>%3$s</div>',
__FUNCTION__,
$wpdb->num_queries,
$list
);
}
หลังจากที่คิดไปนานแล้วฉันได้เขียนโปรแกรมเสริมอีกตัวที่เหมาะสมกับความต้องการของฉันและอาจเป็นของคุณถ้าคุณชอบคอนโซล
<?php
/**
* Plugin Name: T5 Log Queries
* Description: Writes all queries to '/query-log.sql'.
* Plugin URI: http://wordpress.stackexchange.com/a/70853/73
* Version: 2012.11.04
* Author: Thomas Scholz
* Author URI: http://toscho.de
* Licence: MIT
*/
add_filter( 'query', 't5_log_queries' );
/**
* Write the SQL to a file.
*
* @wp-hook query
* @param string $query
* @return string Unchanged query
*/
function t5_log_queries( $query )
{
static $first = TRUE;
// Change the path here.
$log_path = apply_filters(
't5_log_queries_path',
ABSPATH . 'query-log.sql'
);
$header = '';
if ( $first )
{
$time = date( 'Y-m-d H:i:s' );
$request = $_SERVER['REQUEST_URI'];
$header = "\n\n# -- Request URI: $request, Time: $time ------------\n";
$first = FALSE;
}
file_put_contents( $log_path, "$header\n$query", FILE_APPEND | LOCK_EX );
return $query;
}
ติดตามไฟล์ด้วยtail
(มีอยู่บน Windows หากติดตั้ง Git ):
$ tail -f query-log.sql -n 50
SELECT * FROM wp_posts
ขอบคุณ