我正在使用wp\\u localize\\u脚本将主题选项中的几个值传递给javascript文件。首先,我从我的主题选项中获得了值:
$options = get_option(\'theme\');
$flex_auto = $options["slide-auto"];
$flex_animation = $options["slide-animation"];
$flex_direction = $options["slide-direction"];
然后我用
wp_localize_script
创建我的值数组。
wp_enqueue_script(\'flexslider\');
wp_localize_script(\'flexslider\', \'flex_vars\', array(
\'flex_auto\' => $flex_auto,
\'flex_animation\' => $flex_animation,
\'flex_direction\' => $flex_direction
)
);
在我的javascript文件中,我执行了以下操作:
var $anim = flex_vars.flex_animation;
var $auto = flex_vars.flex_auto;
var $dire = flex_vars.flex_direction;
jQuery(\'.flexslider\').flexslider({
animation: $anim,
slideshow: $auto,
controlNav: \'thumbnails\',
directionNav: $dire,
slideshowSpeed: 7000,
animationSpeed: 1000,
touch: true,
});
我的主题选项包括一些使用复选框生成的值,这些复选框可以处理0/1布尔值,而我使用的jQuery插件可以处理true/false。我尝试使用带有两个选项(true或false)的下拉菜单将布尔值保存为字符串,但这似乎不起作用。如何将布尔值从主题选项传递到javascript文件?欢迎您提供任何建议和提示:)
最合适的回答,由SO网友:Mike Madern 整理而成
尝试以下操作:
$options = get_option( \'theme\' );
wp_localize_script( \'flexslider\', \'flex_vars\', array (
\'flex_auto\' => ($options[\'slide-auto\']) ? \'true\' : \'false\',
\'flex_animation\' => $options[\'slide-animation\'],
\'flex_direction\' => $options[\'slide-direction\']
) );
假设
slide-auto
是您创建的布尔值选项。
这个脚本没有经过测试,我直接在这里输入
SO网友:Tim
如@bonger在评论中所述。
如果在wp\\u localize\\u脚本函数中需要布尔值或整数值,则需要将它们放置在嵌套数组中。
wp_localize_script( \'script-handle\', \'jsVariableName\', [
\'args\' => [
\'boolValue\' => true,
\'boolValueFalse\' => false,
\'intValue\' => 9,
\'floatValue\' => 10.3,
\'stringValue\' => \'some string\',
],
] );
这将导致JS脚本中出现这种情况。
{
args: {
boolValue: true
boolValueFalse: false
floatValue: 10.3
intValue: 9
stringValue: "some string"
}
}
数组第一级中的所有变量都将转换为字符串(这是一个i18n方法)。