Wordpress update_option返回false

时间:2014-09-25 08:57:50

标签: php wordpress

我对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在某种程度上验证失败。

1 个答案:

答案 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);
        } 
    }