如果您的意思是,当您仅按名称访问JS代码中的变量时,它们在JavaScript环境中实际上是未定义的。为了访问JS中的变量,您需要像示例中那样键入www_vars.whichcats
而不仅仅是whichcats
此外,了解wp\\u localize\\u脚本的工作原理也很好。
第一个参数是之前用声明的js文件句柄wp_enquee_script
或wp_register_script
(在你的情况下是这样的wwww_loader
). 它说应该在什么时候触发,因为当某些js文件插入到特定页面时,您确实只需要这些数据。
第二个参数是全局变量的名称,它将存储通过第三个参数传递给JS的所有数据—关联数据数组。
它将在包含handle中的脚本时创建内联JS脚本。这个内联JS将使用您作为第二个参数传入的名称在变量中初始化这些数据。
所以,首先检查您是否在第一个参数中指定了正确的脚本句柄。并检查之前是否已将此脚本排队。例如:
wp_enqueue_script(
\'wwww_loader\',
plugins_url( \'/js/wwww_loader.js\', __FILE__ ),
array( \'jquery\' )
);
然后,您可以将所需的数据添加到它的js执行上下文中。
wp_localize_script(\'wwww_loader\', \'wwww_vars\', array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\'),
\'whichcats\' => $whichcats,
\'whichtags\' => $whichtags,
\'ajax_nonce\' => wp_create_nonce(\'ww-ww-ww\'), )
);
最后,您可以检查您是否真的在浏览器中将这些数据传递给了JS,例如在Chrome open developer控制台hit F12中,并在控制台中键入您的变量名
wwww_vars
然后按enter键。如果您的脚本链接正确,您将在开发人员控制台输出中将它们视为对象,否则它将显示给您
undefined
如果它能显示它的值,那么一切都正常,您可以在JS文件中引用这些数据,如
wwww_vars.whichtags
编辑:看起来您将$whichtags和$whichcats变量传递给函数,但它们之前在PHP中没有定义。如果是,请在调用之前初始化它们wp_localize_script
使用一些默认值,0或false或array()或“”emtpy字符串,这些字符串将在wp\\u本地化脚本之前填充数据时描述您的数据,例如:
$whichtags=\'\';
$whichcats=\'\';
wp_localize_script(\'wwww_loader\', \'wwww_vars\', array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\'),
\'whichcats\' => $whichcats,
\'whichtags\' => $whichtags,
\'ajax_nonce\' => wp_create_nonce(\'ww-ww-ww\'), )
);