我对Wordpress update_option函数有一个令人困惑的问题
此行返回false。
var_dump(update_option('category_light_box_'.$tag, $lightbox_pid));
其中$tag
和$lightbox_pid
是经过验证的数字。
使用edit_category
挂钩/过滤器调用此行所属的函数。
我已尝试在wp_options表上运行修复语句并重新启动服务器,但不起作用。 反正我有没有看到正在使用的sql?有谁能建议调试方法?
编辑: 完整的功能代码:
public static function save_categories ($tag) {
echo 'save';
if (preg_match('/^[0-9]{1,}$/', $_POST['category-lightbox']) && $_POST['category-lightbox'] !== '0') {
$lightbox_pid = $_POST['category-lightbox'];
var_dump(update_option('category_light_box_'.$tag, $lightbox_pid));
}
}
和动作调用:
add_action( 'edit_category', array ('ib_lightbox_application', 'save_categories'));
编辑:
我在配置文件中添加了define('SAVEQUERIES', true);
,并在调用wp_update后var_dumped $wpdb->queries
数组。更新应生成的sql语句不存在,因此看起来update_option在某种程度上验证失败。
答案 0 :(得分:1)
好的,我通过反复试验发现,update_options的第一个参数没有包含任何数字的无证要求(我不知道为什么)。 $ tag始终是一个数字。
我按照以下方式重写了我的功能,以消除每个类别对唯一选项的需求:
public static function save_categories ($tag) {
if (preg_match('/^[0-9]{1,}$/', $_POST['category-lightbox']) && $_POST['category-lightbox'] !== '0') {
$lightbox_pid = $_POST['category-lightbox'];
$lightboxes = get_option('category_light_box', '');
$lightboxes = json_decode($lightboxes, true);
$lightboxes[$tag] = $lightbox_pid;
$lightboxes = json_encode($lightboxes);
update_option('category_light_box', $lightboxes);
}
}