WP_LOCALIZE_SCRIPT()和JavaScript命名空间

时间:2018-01-11 作者:Greeso

如你所知,wp_localize_script() 允许从PHP对象创建JavaScript对象。

因此,在运行下面示例中的代码之后:

wp_localize_script(\'my-script\', \'var_name\', $var);  // This works
我们将以一个名为var_name 可在脚本中访问的my-script. 此JavaScript变量是从原始PHP变量复制而来的$var.

目前一切正常。我面临的问题是:我喜欢能够分配var_name 到JavaScript命名空间;在下面的示例中,在对象内部namespace_name

wp_localize_script(\'my-script\', \'namespace_name.var_name\', $var); // This does not work
但我做不到,而且wp_localize_script() 在web控制台中引发以下错误:SyntaxError: unexpected token: \'.\'

有没有一种方法可以让我使用wp_localize_script() 使用JavaScript命名空间?

Note: 我正在传递一个名称空间,因为我喜欢将所有JavaScript数据保存在一个对象中,以防止命名冲突并减少混乱。

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

这条路wp_localize_script() 应该用于将第二个参数用作您的命名空间。然后放置一个数组作为值的第三个参数:

wp_localize_script(
    \'my-script\', 
    \'namespace_name\',
    array(
        \'var_name\' => $var,
    )
);
现在,您可以使用访问脚本中的变量namespace_name.var_name.

如果您还在脚本中使用名称空间,而不是初始化对象,请检索WordPress创建的对象(如果缺少,则返回到新对象)并添加到其中:

var namespace_name = window.namespace_name || {};
namespace_name.new_var = \'Hello world!\';

结束