下面是我的主题选项保存例程。我发现,如果从我的选项数组中传递的$值[\'id\')中有一个句点,那么数据就不会传递,选项似乎在该点中断。我是否应该选择另一个字符,或者是否有在选项名称中使用句点字符的解决方法?
例如,这很好:
"id" => "myTheme_color|sidebar",
但事实并非如此(没有为值传递数据):
"id" => "myTheme_color.sidebar",
保存功能为:
function mytheme_add_admin(){
global $themename, $shortname, $options;
if ( $_GET[\'page\'] == basename(__FILE__) )
{
if ( \'save\' == $_REQUEST[\'action\'] )
{
foreach ($options as $value)
{
update_option( $value[\'id\'], stripslashes($_REQUEST[$value[\'id\']]) );
}
foreach ($options as $value)
{
if( isset( $_REQUEST[ $value[\'id\'] ] ) )
{
update_option( $value[\'id\'], stripslashes($_REQUEST[ $value[\'id\'] ]) );
echo $value[\'id\'].": ".$_REQUEST[$value[\'id\']]."<br>";
echo $value[\'id\'].": ".stripslashes($_REQUEST[$value[\'id\']])."<br>";
}
}
}
}
SO网友:Rarst
我不确定这里的问题是什么,这个测试代码对我来说很好:
$options = array( \'test_option\' => array(\'id\' => \'myTheme_color.sidebar\') );
$test = \'test\';
var_dump($options);
foreach ($options as $value) {
var_dump($value[\'id\']);
update_option( $value[\'id\'], $test );
}
通过快速查看源代码
update_option
失败是指SQL查询插入失败。
我的建议是$wpdb->print_error()
操作后,检查失败的查询并挂接到update_option_{$option}
和updated_option
查看他们是否正在开火的操作(source).