我正在使用wp_localize_script();
来改变我正在构建的主题中的JS,如下所示:
wp_enqueue_script('custom', get_bloginfo('template_directory') . '/js/script.js');
$settings = get_option('bro_options');
wp_localize_script('custom','settings',$settings);
虽然这很好,但它的工作方式是在有问题的JS文件加载之前写入内联JS,这样你就可以使用某些变量来修改JS及其运行方式。
问题是,我真的不喜欢这个选项以及它如何输出内联JS。有谁知道这个的替代方案?我很确定这并不是每个人都用他们的主题选项做到这一点所以必须有另一种方式。
任何帮助都将不胜感激,请不要链接到插件。
简而言之:我正在寻找使用wp_localize_script();
或更好的使用方法的替代方案。
答案 0 :(得分:0)
我所做的是创建一个名为settings.js.php
的文件,其中包含wp-config.php
文件。
像这样:
<?php
header("Content-type: application/x-javascript");
$c = 0;
while($exists !== true && $notfound !== true) {
$c++;
$str = $str . '../';
if(file_exists($str.'wp-config.php')) {
$exists = true;
include($str.'wp-config.php');
$i = 0;
$amount = sizeof($bro);
echo 'var settings={';
foreach($bro as $key => $value) {
$i++;
if($i<$amount) {
echo $key . ':"' . $value . '",';
} else {
echo $key . ':"' . $value . '"';
}
}
echo '};';
}
if($c === 20) {
$notfound = true;
}
}
?>
哪个会在我这样的变量中输出我的选项:
var settings = {
foo: true,
bar: false
};
我会在我的custom.js
文件之前将此文件排入队列,以便我可以确定某些设置是否已打开和关闭。
if(settings.foo === true) {
...
}
所有这些所以我没有内联JS,可能存在一些缓存问题,但我宁愿拥有它而不是输出所有内联选项。