WordPress主题页面自定义数据库查询无返回结果问题求助
问题排查与解决方法
一、SQL查询无返回结果的修复
核心问题出在你的查询语句存在两个兼容性问题,本地环境因为自定义修改过可以运行,但线上标准WordPress环境不兼容:
- 字段名错误:WordPress默认
wp_users表中存储用户名的字段为user_login,不存在name字段,你的本地环境大概率手动新增过该字段所以能正常查询,线上标准表结构会导致查询匹配不到结果。 - 表前缀硬编码:部分线上部署的WordPress会修改默认表前缀,硬写
wp_users可能出现表匹配错误,建议调用WordPress内置的$wpdb->users变量动态获取用户表名,适配所有前缀配置。
修改后的可用代码如下:
$current_user = wp_get_current_user(); echo $current_user->ID; echo $current_user->user_login; global $wpdb; $wp_usersinfo = $wpdb->get_row( $wpdb->prepare( "SELECT * from {$wpdb->users} WHERE user_login = %s",$current_user->user_login ),ARRAY_A ); print_r($wp_usersinfo);
二、functions.php自定义函数不生效的排查方向
按优先级依次排查:
- 确认函数写在当前激活的主题的functions.php文件中,若使用子主题,不要把函数写在父主题的functions.php里,避免主题更新后覆盖或者加载优先级问题。
- 清空线上所有缓存:绝大多数托管平台会自带静态页面缓存,搭配WordPress缓存插件时,修改代码后未清缓存会一直读取旧的页面内容,看不到新代码的输出结果。
- 先做最简测试验证:可以先在functions.php顶部加入无依赖的测试函数,排除语法错误、钩子限制等问题:
// functions.php 顶部新增 function test_custom_output() { return '函数调用正常'; }
// front-page.php 中调用 echo test_custom_output();
如果以上测试正常输出,说明你之前写的自定义函数存在逻辑错误或者加载限制,对应调整即可。
内容的提问来源于stack exchange,提问作者Pradeep Artss
相关产品推荐
相关产品推荐

