默认自定义主题选项的索引未定义

时间:2018-08-09 作者:timmyg

我有一个自定义主题选项,允许更改徽标。有3个徽标选项:选项1、选项2和选项3。

激活主题后,会出现默认的“option1”徽标,但在其上方我会看到一个"Notice: Undefined index: flagship_sub_shield in...". 如果保存自定义主题选项页面,此错误就会消失。

我写条件句的方式有问题吗?或者,问题可能更多地与主题选项有关。php文件?

标题中的我的代码。php是

<?php
$theme_option = flagship_sub_get_global_options();
$shield = $theme_option[\'flagship_sub_shield\'];

if (\'option2\' === $shield): 

  //Image Option #2

elseif (\'option3\' === $shield): 
   //Image Option #3

else: 
  //Image Option #1
endif; ?>
Theflagship_sub_get_global_options 功能位于“我的主题选项”中。php文件,在我的库目录中。相关选项为:

$options[21] =
array(
    \'section\' => \'select_section\',
    \'id\'      => FLAGSHIP_SUB_SHORTNAME . \'_shield\',
    \'title\'   => __( \'Shield\', \'flagship_sub_textdomain\' ),
    \'desc\'    => __( \'Which shield should appear in the header?\', \'flagship_sub_textdomain\' ),
    \'type\'    => \'select\',
    \'choices\' => array(\'option1\',\'option2\',\'option3\'),
    \'std\'     => \'option1\',
);
感谢您的帮助!

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

在中访问索引之前,可以确保已定义索引header.php, 然后优雅地后退:

<?php
$theme_option = flagship_sub_get_global_options();
if ( array_key_exists( \'flagship_sub_shield\', $theme_option ) ) {
    $shield = $theme_option[\'flagship_sub_shield\'];
} else {
    $shield = \'option1\'; // Default value
}

if (\'option2\' === $shield): 

  //Image Option #2

elseif (\'option3\' === $shield): 
   //Image Option #3

else: 
  //Image Option #1
endif; ?>
另一个可能更好的选择是查看您的flagship_sub_get_global_options() 函数,并确保返回一个包含所有设置的数组,包括尚未保存在数据库中的设置的默认值。

结束

相关推荐

Wp-login.php输入密码什么都不会发生

我有一个prettypeople网站。无论何时我尝试以管理员身份登录,无论是在/wp admin还是/wp登录并输入正确的凭据,都不会发生任何事情!页面刷新,如果我检查日志,我找不到任何东西!我能做什么?链接更改自prettypeople.nl/wp-login 收件人:https://prettypeople.nl/wp-login.php?redirect_to=https%3A%2F%2Fprettypeople.nl%2Fprettypeople%2F%2Fwp-admin%2F&reau