点“。”在选项值页签中保存选项功能

时间:2010-11-23 作者:Scott B

下面是我的主题选项保存例程。我发现,如果从我的选项数组中传递的$值[\'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>";
            } 
        }
    }
}

2 个回复
最合适的回答,由SO网友:fuxia 整理而成

点和空格是replaced PHP通过POST和GET获取数组索引。这可能会导致你的问题。

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).

结束

相关推荐