输出WordPress数据库查询的具体内容 减少数据库查询次数
<p><span>最近做一个wordpress的企业模板,关注了一下查询次数这个东西! </span><br><br><span>在 footer.php 里添加了如下代码,以显示wordpress查询数据库次数及查询耗时: </span><br><br><span><?php echo get_num_queries() . ' queries in ' . timer_stop(0) . ' seconds.'; ?> </span><br><br><span>结果显示首页查询30次,日志页查询达45次。。。真是郁闷,为了查看具体查询了数据库哪些内容,Google了一下,得到如下解决方法,这里总结出来: </span><br><br><span>首先在 wp-config.php 里添加如下代码: </span><br><br><span>define('SAVEQUERIES', true); </span><br><br><span>然后在 footer.php 里添加如下代码: </span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
<?php if (is_user_logged_in()){ <br>
global $wpdb; <br>
echo "<pre>"; <br>
print_r($wpdb->queries); <br>
echo "</pre>"; <br>
} ?>分析: </p>
<p>
<br><span>1、if (is_user_logged_in()) 用于判断当前访客是否已登录,也可以用 if (current_user_can('level_10')) 来判断是否为管理员登录,目的是为了不让游客查看到这些数据,此代码可省; </span><br><br><span>2、global $wpdb; 定义全局变量$wpdb,这是Wordpress默认的数据库类; </span><br><br><span>3、<pre></pre>将结果嵌套在HTML标签<pre>内; </span><br><br><span>4、print_r($wpdb->queries); 输出各次数据库查询的信息。 </span><br><br><span>刷新首页或日志页,可看到类似如下的输出结果: </span></p>
<div>
<p>
<span><u>复制代码</u></span></p>
<p>
代码如下:</p>
</div>
<p>
<br>
Array <br>
( <br>
=> Array <br>
( <br>
=> SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 10 <br>
=> 0.0003960132598877 <br>
=> require, wp, WP->main, WP->query_posts, WP_Query->query, WP_Query->get_posts <br>
) <br>
=> Array <br>
( <br>
=> SELECT option_value FROM wp_options WHERE option_name = 'nuodou_header_code' LIMIT 1 <br>
=> 0.0013589859008789 <br>
=> require, require_once, include, get_header, locate_template, load_template, require_once, get_option <br>
) </p>
<p>
<br><span>……下面的活儿就得自己分析了,看看哪些是可以删除,哪些是可以改进的!</span></p>
頁:
[1]