我有一个自定义主题选项,允许更改徽标。有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; ?>
The
flagship_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\',
);
感谢您的帮助!
最合适的回答,由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()
函数,并确保返回一个包含所有设置的数组,包括尚未保存在数据库中的设置的默认值。