是否使用url_Query变量将脚本入队?

时间:2012-05-15 作者:setterGetter

有没有一种简单的方法可以将填充了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未定义”

1 个回复
最合适的回答,由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文件。它可能会被过滤掉或者,这是一种动态性很低的方法,但您可以单独包装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
}

结束

相关推荐