使用wp_LOCALIZE_SCRIPT传递布尔值

时间:2013-07-05 作者:charlenemasters

我正在使用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文件?欢迎您提供任何建议和提示:)

3 个回复
最合适的回答,由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网友:Dilip Rajkumar

这是对我有用的正确答案

wp_add_inline_script(\'helloworld\',\'var site_config =\'.json_encode(array (<Your array>)));

wp_localize_script with boolean and init

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方法)。

结束