【问题标题】:Passing wordpress template_directory_uri() to acf-maps.js将 wordpress template_directory_uri() 传递给 acf-maps.js
【发布时间】:2014-04-24 00:12:42
【问题描述】:

我似乎无法弄清楚。

我正在使用带有高级自定义字段和自定义帖子类型的 Wordpress,以便显示与这些自定义帖子类型关联的位置的地图。

我正在使用 MarkerClusterer 并希望为其自定义图标,并且不想硬编码图像的路径。

我知道我应该使用 wp_localize 但不知道该怎么做。

我的主题文件夹中有一个 functions.php 文件,我认为我必须将 template_directory_uri() 作为变量传递。

我的主题文件夹中有一个 /js/acf_maps.js 需要读取该变量,也就是说,而不是在 js 文件中硬编码:

url: 'http://mysite/wp-content/themes/mytheme/img/clustercustomicon.png'

我想拥有

http://mysite/wp-content/themes/mytheme/

作为变量传递,只添加自定义图标的相对路径。

希望这是有道理的。 谢谢。

【问题讨论】:

    标签: javascript php wordpress google-maps-api-3 advanced-custom-fields


    【解决方案1】:

    我更喜欢使用 wp_localize_script 传递变量。

    $array['theme_url'] = template_directory_uri();
    wp_localize_script( 'enqueue_handle', 'variable', $array);
    

    然后在 javascript 中使用 variable.theme_url 访问变量。

    http://codex.wordpress.org/Function_Reference/wp_localize_script

    【讨论】:

    • 是的,根据我的阅读,这是要走的路,但您能详细说明一下吗?如果我将您提供的代码放在 functions.php 中,我会调用未定义的函数 template_directory_uri()
    • 在排队 acf-map.js 时调用它。将“enqueue_handle”替换为与 acf-map.js 相同的句柄,但请确保在注册 acf-map.js 后调用它。
    • 谢谢,这就是问题所在。只需将 template_directory_uri() 替换为 get_template_directory_uri() !
    【解决方案2】:

    如果你创建一个全局 javascript 变量,你将能够在其他 js 文件中访问它

    var theme_url = '<?php echo template_directory_uri(); ?>';
    

    在js文件中,

    var icon = window.theme_url+'/img/clustercustomicon.png';
    

    【讨论】:

    • 现在它帮助我找到了一种可行的方法来做到这一点!谢谢:我已将此代码放在 functions.php:// defining global JS variables add_action ( 'wp_head', 'js_vars' ); function js_vars(){ ?&gt; &lt;script type="text/javascript"&gt; var wp_template_dir = &lt;?php echo json_encode (get_template_directory_uri()); ?&gt;; &lt;/script&gt; &lt;?php } 中,并将此代码放在 js:url: wp_template_dir + '/img/cluster.png' 中。我认为使用 wp localize 是更好的选择,但至少这个效果很好!
    • 感谢您的帮助。管理与 wp_localize 但你的方法也很有用,有时可能很方便,谢谢
    猜你喜欢
    • 2016-04-18
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    相关资源
    最近更新 更多