0

当打印以显示 wordpress 常规设置中的单选按钮值时,我经常遇到以下错误:

第 565 行 F:\wamp\www\plugin-tester\wp-content\themes\twentythirteen\functions.php 中的非法字符串偏移“服务”

第 568 行 F:\wamp\www\plugin-tester\wp-content\themes\twentythirteen\functions.php 中的非法字符串偏移“服务”

这是我在 function.php 文件中添加的代码:

add_filter('admin_init', 'myservice_register_function');
function myservice_register_function(){

register_setting('general', 'my_service', 'esc_attr');

add_settings_field('my_service', '<label for="service_need">'.__('Do You need My    Service' , 'my_service' ).'</label>' , 'service_function', 'general');
}

 function service_function(){
   $options = get_option( 'my_service', '');
   //  $options = get_settings( 'my_service');

   if($options['service'] == 'YES') { //line number 565
     echo 'Yes, Service Need'; 
   }
  if($options['service'] == 'NO') { // line number 568
    echo 'No Need Service';
}


  $html = '<input type="radio"  name="my_service[service]" value="YES"/>'; 
  $html .= '<label> NEED </label>'; 
     
  $html .= '<input type="radio"  name="my_service[service]" value="NO"/>'; 
  $html .= '<label > NO NEED </label>'; 
     
  echo $html;
 }

请帮助某人并指出我的代码在哪里出错。

4

2 回答 2

1

您的 $options 变量很可能是一个字符串,而不是一个数组。当您编写 时$options['arrayKey'],您将 $options 视为一个数组。

做一个调试功能:

function my_debug($o){
    echo "<pre>";
    print_r($o);
    echo "</pre>";
}

并在 563-564 行附近的 $options 变量上调用它:

my_debug($options);

你会看到它是什么样子,它是一个字符串还是一个数组,以及它是否有一个“服务”键,就像你正在检查的那样。

于 2013-10-18T20:41:22.820 回答
0
 if($options == 'YES') { //line number 565
     echo 'Yes, Service Need'; 
   }
  if($options == 'NO') { // line number 568
    echo 'No Need Service';
}

get_option 返回您传入的值,如果找不到键value,则返回布尔值。您将 value 解释为数组keyfalse

参考这里 Get Option

于 2013-10-18T20:51:50.057 回答