【发布时间】:2018-04-11 16:25:55
【问题描述】:
我一直在高级自定义字段插件 (load_field) 中使用挂钩,它将对象从我的数据库中的表加载到 ACF 选择字段。表格 ('wp_new_royalsliders') 是由 RoyalSlider 图像滑块插件创建的,所以我使用钩子用滑块名称填充选择字段。
这个功能已经运行了很长时间,但最近停止工作 - 我认为在将核心更新到 4.8.2 后:
add_filter('acf/load_field/name=media_gallery_slider', 'my_acf_royalslider_choices');
function my_acf_royalslider_choices($field){
$field['choices'] = array();
global $wpdb;
$query = $wpdb->prepare('SELECT * FROM %1$s ORDER BY ID ASC', 'wp_new_royalsliders');
$results = $wpdb->get_results($query);
if(!empty($results)) :
foreach($results as $result) :
$value = $result->id;
$label = $result->name;
$field['choices'][ $value ] = $label;
endforeach;
endif;
return $field;
}
当我打开调试时出现错误:
WordPress 数据库错误:[You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%1$s ORDER BY ID ASC' at line 1]
SELECT * FROM %1$s ORDER BY ID ASC
【问题讨论】:
-
%1$s看起来像自定义准备语法.. MySQL 不允许使用变量表名进行准备查询...查看自定义准备语法没有被替换的错误 annymore.. -
感谢您的状态报告。有问题吗? WordPress 已更新至包含 SQL 注入安全漏洞修复程序的版本;该代码在新版本中表现出不同的行为,并且...您的问题是...?
标签: mysql wordpress advanced-custom-fields