有没有一种简单的方法可以将填充了url\\u查询值的JavaScript文件排队?
我在js目录下有一个php文件,其中包含JavaScript头,我想根据url\\u查询值生成一些动态JavaScript。
谢谢
Gs公司
更新时间:
是的,在widget类中,我添加了以下内容(作为测试):
(在构造函数中,我只想创建一个完全唯一的ID,所以我使用了时间戳+一组随机的#s):
$this->widget_id=time().rand(2,10).rand(2,10).rand(2,10).rand(2,10).rand(2,10).rand(2,10);
add_action(\'wp_footer\', array( &$this, \'footer_js\' ));
(然后是方法):
public function footer_js(){
wp_register_script( \'mgs-site-script\'.$this->widget_id, $this->plugin_location . "js/mgs.js", array(\'jquery\'),\'1.2.0\');
wp_enqueue_script( \'mgs-site-script\'.$this->widget_id );
$translation_array = array( \'some_string\' => __( \'Some string to translate\' ), \'a_value\' => \'10\' );
wp_localize_script( \'mgs-site-script\', \'object_name\', $translation_array );
}
然后在mgs。js我试图通过调用访问变量:
alert(object_name.some_string);
但firebug吐出“object\\u name未定义”
最合适的回答,由SO网友:mrwweb 整理而成
如果没有你提供的更详细的例子,我无法获得更具体的信息,但我认为你可以结合get_query_var()
和wp_enqueue_script()
要这样做,请执行以下操作:
add_action( \'wp_enqueue_scripts\', \'sg_scripts\' );
function sg_scripts() {
$current_slug = get_query_var( \'page_name\' );
wp_enqueue_script( \'sg_custom_js\', get_template_directory_uri() . \'/js/somefile.php?slug=\' . $current_slug, $dependencies, $version, $in_footer);
}
(我将最后三个参数保留为占位符。)
诚然,我从未尝试过这个。有几件事可能会给你带来麻烦:
我不知道如果wp_enqueue_script()
传递了非-。js文件。它可能会被过滤掉我知道很多缓存插件(和WordPress?)查看$version参数以获取缓存。如果您看到最近一个slug中的js的旧版本得到了服务,我想这就是发生的事情或者,这是一种动态性很低的方法,但您可以单独包装wp_enqueue_script()
具有静态的实例。js文件位于if
测试query_var
e、 g.:
$current_slug = get_query_var( \'page_name\' );
if( $current_slug == \'something\' ) {
\\\\ enqueue a script
} elseif( $current_slug == \'somethingelse\' ) {
\\\\ enqueue a different script
}
} else {
\\\\ enqueue a third script
}