Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为javascript和php建立全局变量_Javascript_Php_Wordpress - Fatal编程技术网

为javascript和php建立全局变量

为javascript和php建立全局变量,javascript,php,wordpress,Javascript,Php,Wordpress,我继承了一个wordpress网站,该网站将主javascript存储在一个.php文件中,因为它使用在该网站的其他php模板中设置的全局变量。例如,主javascript文件使用依赖于php变量的条件,如下所示: <?php if ($GLOBALS['page_class'] == 'news' ?> $("foo").someJavaScriptAction(); 在Wordpress中实现这一点的真正、正确的方法是使用(在theme functions.php中

我继承了一个wordpress网站,该网站将主javascript存储在一个.php文件中,因为它使用在该网站的其他php模板中设置的全局变量。例如,主javascript文件使用依赖于php变量的条件,如下所示:

<?php if ($GLOBALS['page_class'] == 'news' ?>
      $("foo").someJavaScriptAction();

在Wordpress中实现这一点的真正、正确的方法是使用(在theme functions.php中使用):


然后,要访问script.js中的
var1
,只需执行以下操作:
script\u vars.var1

不幸的是,编写该代码的人做得很糟糕。Wordpress有自己的处理方法,可以在脚本标记内部使用
var wpvars=
,这样就可以从
窗口中解析它。然后从.js文件中的
window.wpvars
遍历对象。除了根据其他注释注入JSON外,如果js片段较大,可以将它们拆分为.js文件,并使用有条件地对它们进行排队。您还可以使用CSS类来触发该行为—类似于
if($(“.page_class”))$($foo”)..
我应该使用的变量数量是否有任何限制?我的意思是,是否有任何理由支持性能使用更少的变量?我想我会用10个左右。不,对于那个数量的变量,这是完全可以的。如果你想得到更多,一个更干净的解决方案是
json\u编码
it,以便在JS中解码它并获得一个唯一的对象。它可能会影响性能,仅仅是使用大量的变量,比如100个。
function enqueue_scripts() {
    wp_register_script('theme-script', get_stylesheet_directory_uri() . '/js/script.js', array('jquery'), '', true);
    wp_localize_script('theme-script', 'script_vars', array(
        'var1'  => $GLOBALS['var1'],
        'var2'  => $GLOBALS['var2']
    ));
    wp_enqueue_script(theme-script);
}