2014-09-25 30 views
0

我有一個令人困惑的問題與WordPress的update_option功能WordPress的update_option返回false

這條線返回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);和var_dumped的$wpdb->queries調用wp_update之後的數組。更新應該生成的sql語句不存在,因此它看起來像update_option以某種方式驗證失敗。

+0

你確定$ lightbox_pid是不是空的? – 2014-09-25 09:24:45

+0

如果更新失敗或者沒有更改,'update_option()'返回'false'。你檢查了舊的價值嗎? – 2014-09-25 09:25:21

+0

當在問題行之前立即回顯時,將lightbox_pid填充(用於測試目的,我將其設置爲'30')。沒有任何選項以category_light_box_開頭 – 2014-09-25 09:30:51

回答

0

好吧,我通過試錯發現,有一個無證的要求,第一個參數update_options不包含數字,(我不知道爲什麼)。 $標籤始終是一個數字。

我改寫了我的功能如下除去每類唯一選項的需要:

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