如何在WordPress中动态生成JavaScript代码?

时间:2014-03-24 15:53:16

标签: javascript php jquery wordpress

我在我的WordPress主题中设置了一个选项面板,我有一个选项,即" client_id"。我想使用该值并将其放入我的JavaScript文件中。这可能与WordPress?它有一个"编译器"可以将值返回到我的JS文件中?或者如何通过functions.php?

将JS函数添加到我的WordPress主题中

目前我正在为我的所有样式和脚本使用wp_enqueue。我可以添加JS函数来入队吗?

2 个答案:

答案 0 :(得分:1)

我在所有主题上使用本地化来获取JavaScript中的PHP数据。这并不难,我在下面详述。

首先,确保使用enqueue加载要在FOOTER中工作的javascript文件。如果它在页脚之前排队,您将无法获得任何数据,因为页脚是我们将数据提供给JavaScript的地方。这就是我在functions.php中的调用。 null和true参数对于使其工作至关重要,more info in codex

  //functions.php
  wp_enqueue_script('my_custom_javascript', get_template_directory_uri() . '/assets/js/scripts.js', array('jquery'), null, true);

然后在任何模板中,在代码顶部创建一个全局PHP数组变量。根据需要,将索引添加到包含有意义名称的数组,以及稍后要在JavaScript中使用的数据。

<?php // template file
  get_header();

  $javascript_data = array();
  //... then throughout your template ...
  $javascript_data['some_data'] = 'some value';
  $javascript_data['more_data'] = $some_variable;

然后,在页脚中,在调用get_footer()之前,添加一个本地化函数,它将PHP变量(包含您在模板中添加的所有内容)包装在一个方便的javascript对象中。更多more info in codex

<?php //footer.php
  wp_localize_script( 'my_custom_javascript', 'js_data', $javascript_data );
  get_footer();      

这将获取您在PHP数组中的所有数据,并将其本地化为您的my_custom_javascript脚本入队,然后创建一个对象,然后您可以立即在javascript文件中使用,如下所示:

// Javascript file
alert(js_data.some_data);
// or
console.log(js_data.more_data);
// I usually add this to the top of my JS for debugging
console.dir(js_data);

所以对你来说,完成上述操作后,你的functions.php可能包括:

$javascript_data['client_id'] = get_client_id();
function get_client_id(){
// $client_id = code to get the id here
// return $client_id
}

然后页脚会将该数据本地化到您的脚本中,并且js_data.client_id将在您的javascript文件中可用。

答案 1 :(得分:-5)

你可以用这种方式添加脚本

 function wpb_adding_scripts() {
    wp_register_script('my_test_script', plugins_url('test_script.js', __FILE__), array('jquery'),'1.1', true);
    wp_enqueue_script('my_test_script');
    }

    add_action( 'wp_enqueue_scripts', 'wpb_adding_scripts' );