[自己动手改wordpress.2]给wordpress加上简约的debug sql调试.

还是那个同事. 这次需要帮她打印出sql 输出到页面来调试sql

这里我们用插件或者是配置文件的方式来启动wordpress的debug

在插件目录 wordpress/wp-content/plugins/ 新建一个文件叫bt_debug_sql.php

<?php
/*
Plugin Name:    Bt Debug Sql.
Plugin URI:     http://www.btroot.com
Description:    Show the sql at the frontpage.
Author:         rainysia
Version:        1.0
Author URI:     http://www.btroot.org
 */

/**
 * Show debug Sql.
 *
 * @return void
 */
add_action('init', 'bt_debug_sql');

function bt_debug_sql() {
    if (!defined('SAVEQUERIES')) {
        define('SAVEQUERIES', true);
    }
    if (has_action('wp_footer')) {
        add_action('wp_footer', 'snx_show_sql');
    }
}
// show sql
function snx_show_sql(){
    if (isset($_GET['debug']) && $_GET['debug'] == true) {
        global $wpdb;
        //echo '<pre>'; 
        //print_r ($wpdb->queries);
        $all_debug_queries = $wpdb->queries;
        echo "<table>";
        if (isset($all_debug_queries) && count($all_debug_queries) > 0) {
            $total_time_cost = 0;
            $large_time_cost = 0;
            $large_sql_query = '';
            $large_sql_num = 0;
            $debug_file = false;
            if (isset($_GET['debug_file']) && $_GET['debug_file'] == true) {
                $debug_file = true;
            }
            echo '<tr style="font-weight:bold;"><td>Num</td><td>Times</td><td>SQL</td>';
            echo $debug_file ? '<td>Include files</td><tr>' : '';
            foreach ($all_debug_queries as $k => $v) {
                // $v[0] is sql, $v[1] is time, $v[2] is relative file.
                $total_time_cost += $v[1];
                if ($large_time_cost <= $v[1]) {
                    $large_time_cost = $v[1];
                    $large_sql_query = $v[0];
                    $large_sql_num = $k + 1;
                }
                if (($k + 1) % 2 == 1) {
                    echo '<tr style="background-color:#8F9196;color:rgb(202, 227, 253);"><td style="font-weight:bold;text-align:center;">'.($k + 1).'</td>';
                } else {
                    echo '<tr><td style="font-weight:bold;text-align:center;">'.($k + 1).'</td>';
                }
                echo '<td style="text-align:left;">'.sprintf("%.10f", $v[1]).'</td>';
                echo '<td style="padding-left:6px;text-align:left;">'.$v[0].'</td>';
                echo $debug_file ? '<td style="text-align:left;">'.$v[2].'</td>' : '';
                echo '</tr>';
            }
        }
        echo '<div style="text-align:left;">';
        echo '<div style="widht:100%;height:3px;margin:10px 0;background:rgba(56, 83, 129, 0.85)!important; -moz-box-shadow:0px 0px 1px #c3c3c3; -webkit-box-shadow:0px 0px 1px #c3c3c3; -box-shadow:0px 0px 1px #c3c3c3;"></div>';
        echo '<div>The whole sql queries cost:<span style="color:red;"> '.$total_time_cost.'s</span></div>';
        echo 'The large sql is No.<span style="color:red;">'.$large_sql_num.'</span>  cost: <span style="color:red;">'.$large_time_cost.'s</span><br />  <span style="color:rgb(194, 76, 95);background-color:rgb(208, 210, 218);">'.$large_sql_query.'</span><br />';
        echo '<div style="widht:90%;height:3px;margin:10px 0px;background:rgba(128, 143, 158, 0.85)!important; -moz-box-shadow:0px 0px 1px #c3c3c3; -webkit-box-shadow:0px 0px 1px #c3c3c3; -box-shadow:0px 0px 1px #c3c3c3;"></div>';
        echo "</table>";
        echo '</div>';
    }
}

这里的作用只是为了让wordpress的SAVEQUERIES 静态变量设为true, 所以你也可以不这样, 直接在wp-config.php 配置文件里面加一句

define('SAVEQUERIES', true);

效果是一样.

接着在/wp-content/theme/你的主题/footer.php 最后一个</div> 前加上下面的代码来调用一次wp_footer();保存即可.

<?php wp_footer();?>

保存后就可以了. 然后去启用插件, 使用的时候, 在当前页面的url后跟?debug=true 可以开启debug sql模式, 加debug_file=true会显示include的关联文件.

http://test.com/solutions/vwideformat/test/?debug=1 和

http://test.com/solutions/vwideformat/test/?debug=1&debug_file=1

效果如下

[自己动手改wordpress.2]给wordpress加上简约的debug sql调试.

时间: 2025-01-15 10:35:27

[自己动手改wordpress.2]给wordpress加上简约的debug sql调试.的相关文章

[改变自己wordpress.2]至wordpress再加上简单的debug sql调试.

或者说,同事. 需要帮助她打印出来sql 调试输出到页面sql 在这里,我们使用插件或一个的方式来启动配置文件wordpress的debug 在插件文件夹 wordpress/wp-content/plugins/ 新建一个文件叫bt_debug_sql.php <?php /* Plugin Name:    Bt Debug Sql. Plugin URI:     http://www.btroot.com Description:    Show the sql at the front

How to Get Rid of /wordpress/ From your WordPress Site URL

I brought up a website using wordpress, but I had to visit my website in a way I don't like -- www.example.com/wordpress/. Well, frankly, I want the "/wordpress/" to go to hell. but how? I did a lot of google, and found some pretty well-written

[自己动手改wordpress.3]给wordpress加上禁止附件外链

前言, 有几个月没写php了. 刚好公司有个web的项目需要改下之前他们搭建的Wordpress的站点, 因为给所有的page/post都加上了权限组来控制权限和SSO登录认证一体化. 但是附件却没有保护到. Wordpress直接暴露了附件的服务器上的地址.作为一个安全隐患, 这个需要修复. 本文适合有一些WP的插件开发经验的朋友. 1,数据准备, WP的附件attachment存放在Wordpress的后台的Media这个页面来控制,也可以直接通过发page的时候添加媒体文件来实现. 数据库

[自己动手改wordpress.1]wordpress的插件User-Access-Manager在新的php版本号里面无法执行的bug.

近期同事在玩wp, 就顺带一起看了下. 她说插件有个不能用. 是一个叫User Access Manager 的插件 详细表现就是在后台填好相应的roles角色的时候, 点提交就会跳到一个错误的页面 看了下解决非常easy, 打开wordpress/wp-content/plugins/user-access-manager/tpl/adminGroup.php 大约在79行有一个reset的输出. 这里实际已经在php5.3的时候,会报Strict Standards: Only variab

JDBC终章- 使用 DBUtils实现增删查改- C3P0Utils数据源/QueryRunner runner连接数据源并执行sql

JDBC终章- 使用 DBUtils实现增删查改 1.数据库结构 Create Table CREATE TABLE `user` ( `id` int(3) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `password` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 2.工程结构    

自己动手写ORM(01):解析表达式树生成Sql碎片

什么是ORM框架:   ORM即对象关系映射(Object Relational Mapping,简称ORM),是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. 自己也用过很多ORM框架,比如微软的EF,Hibernate.轻量级一点的有Depper等等.这些框架说白了就是让我们能像操作对象那样去操作数据库. 鄙人是个比较懒的程序猿,总想这写更少的代码做更多的事情,最近不是很忙,于是

wordpress电子商务插件和主题的使用方法

前提步骤:卸载wordpress干净,需要把相应的数据库删除:drop databade **: (1)先改wordpress中重要文件的权限:777 (2)用usradd -d www /html命令添加www用户后,把该用户给wordpress:chown -R /html:www * (3)就可以安装相应插件和上传主题(不用FTP)了 1.woocommerce插件的使用: (1)设置->产品->显示->商店和产品页面->店铺页面:产品就可以显示在页面的主要部分了: (2)要

Android牟利之道(一)--界面嵌入baidu广告

终于弄清楚了Android软件界面嵌入广告的办法,以下我以嵌入baidu 广告为例小结一下:我的新浪微博:http://weibo.com/liyi200008. 过程一,下载有admob广告SDK,,admob将 baidu-android.jar 导入想要嵌入广告的的工程中.1. 右键您的工程根目录,挑选“Properties”2. 在左面板中挑选“Java Build Path”3. 然后挑选“Libraries”标签4. 点击“Add External JARs„”5. 挑选baidu-

Centos7+Apache2.4+php5.6+mysql5.5搭建Lamp环境——为了wordPress

最近想搭建个人博客玩玩,挑来挑去发现口碑不错的博客程序是wordpress,简称wp.虽然是学java路线的程序员,但因入行时间太短,至今没有发现较为称手开源的博客程序,如果各位大神有好的推荐,也希望能在评论中告知. 先上一张效果图: WordPress WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. 它的原版是英文的,不过也支持中文版的,据用过的哥们说,