调试器告诉我get\\u theme\\u mod()返回“false”,而我希望它返回所选项目的值。
get_theme_mod()
不起作用,因为在注册设置时type
到option
:
$wp_customize->add_setting(\'title_font\', array(
\'default\' => \'Roboto Slab\',
\'capability\' => \'edit_theme_options\',
\'type\' => \'option\',
\'transport\' => \'postMessage\'
));
可能的值
type
添加设置时
\'option\'
, 或默认值,
\'theme_mod\'
.
option
独立于当前主题存储值,并使用get_option()
, 虽然theme_mod
仅存储当前主题的值,并使用get_theme_mod()
.
使用get\\u option()可以得到选项的键“value3”,而不是值。
“键”是值。它是输出到value=""
的属性<option>
标签
如果你想使用这个标签,有两种可能的解决方案。
首先,您可以只传递标签,然后这些标签也将用作值:
array(
\'Roboto Slab\',
\'Times New Roman\',
\'American Typewriter\',
),
或者,您可以独立于两个位置存储对标签的引用:
function wpse_341193_get_font_options() {
return array(
\'value1\' => \'Roboto Slab\',
\'value2\' => \'Times New Roman\',
\'value3\' => \'American Typewriter\',
);
}
然后可以将其用作选项:
\'choices\' => wpse_341193_get_font_options(),
和输出:
<?php
$font_options = wpse_341193_get_font_options();
$font_family = get_theme_mod(\'title_font\');// false
?>font-family: <?php echo $font_options[$font_family] ?>;