Phi*_*ton 6 mysql wordpress wordpress-plugin
我正在制作一个在WordPress数据库上进行自定义查询的插件,然后我循环查看每个帖子标题的结果,作为实际帖子的链接.
我正在使用get_permalink($id)获取每个帖子的URI,但由于我在循环之外这样做,我的怀疑是这些请求中的每一个都在进行单独的数据库查询.
我已经检查了功能代码并尝试跟踪实际的WordPress核心文件中发生的事情,但我真正感兴趣的是这样做的一般方法,所以我可以确保我总是写得最多在我的所有插件中优化代码.
有人知道实现这个目标的最佳方法吗?
Poe*_*rin 26
在wp-config.php中添加以下行:
define('SAVEQUERIES', true);
Run Code Online (Sandbox Code Playgroud)
在你的主题functions.php文件(或者那个插件文件)中你可以使用:
add_action('shutdown', 'sql_logger');
function sql_logger() {
global $wpdb;
$log_file = fopen(ABSPATH.'/sql_log.txt', 'a');
fwrite($log_file, "//////////////////////////////////////////\n\n" . date("F j, Y, g:i:s a")."\n");
foreach($wpdb->queries as $q) {
fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");
}
fclose($log_file);
}
Run Code Online (Sandbox Code Playgroud)
确保ABSPATH.'/sql_log.txt'可以从php写入.
希望这可以帮助.
小智 5
无法评论@Poelinca Dorin 的回答,所以我就在这里说一下:
如果您想知道是什么启动了查询,只需使用以下命令:
fwrite($log_file, $q[0] . " - ($q[1] s)". " [Stack]: $q[2]" . "\n\n");
代替:
fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");
| 归档时间: |
|
| 查看次数: |
7753 次 |
| 最近记录: |