如何在自定义页面模板中使用wp_LOCALIZE_SCRIPT?

时间:2018-06-22 作者:Bhautik

我有一个名为homepage的模板,它被分配到主页,模板的底部有一个脚本标记。现在,我想在脚本标记中使用JSON。

主模板。php

<?php
add_action(\'wp_enqueue_scripts\', \'pass_var_to_js\',99);
function pass_var_to_js() {
    // Localize the script with new data
    $translation_array = array(
        \'popularDestination\' => json_encode($data[\'POPULAR DESTINATIONS\']),
    );
    wp_localize_script( \'home_page_json\', \'home\', $translation_array );

    // Enqueued script with localized data.
    wp_enqueue_script( \'home_page_json\' );
}
?>

<script type="text/javascript">
var data = home.popularDestination;
</script>
wp\\u localize\\u脚本未加载到我的页面上我已检查视图源,但它未显示。

1 个回复
最合适的回答,由SO网友:DaveLak 整理而成

根据提供的代码,您似乎误解了wp_localize_script 作品函数的签名如下所示:

wp_localize_script( $handle, $name, $data );

哪里$handle 是已注册或排队的JavaScript文件的名称before 使命感wp_localize_script. 看看example in the codex (我在下面添加了行号):

1: <?php
2: 
3: // Register the script
4: wp_register_script( \'some_handle\', \'path/to/myscript.js\' );
5: 
6: // Localize the script with new data
7:  $translation_array = array(
8:    \'some_string\' => __( \'Some string to translate\', \'plugin-domain\' ),
9:    \'a_value\' => \'10\'
10: );
11: wp_localize_script( \'some_handle\', \'object_name\', $translation_array );
12: 
13: // Enqueued script with localized data.
14: wp_enqueue_script( \'some_handle\' );
看看上面的第4行。首先,将JavaScript文件注册到$handle \'some_handle\'.

接下来,在第11行,wp_localize_script() 用于注册脚本句柄的本地化数据\'some_handle\' 在第4行注册。

最后,在第14行,JavaScript文件(在第4行注册)被排队。因为wp_localize_script() 同样通过了$handle WordPress在第4行注册,自动在每个wp_enqueue_script( \'some_handle\' ); 被调用。

换句话说,您需要使用wp_localize_script with 已注册的JavaScript文件。而不是像你现在所做的那样。

此报价来自the notes section 或多或少地说了同样的话:

IMPORTANT! 必须在使用wp\\u register\\u script()或wp\\u enqueue\\u script()注册脚本后调用wp\\u localize\\u script()。

还有,我认为你不需要json_encode() 你的$data. WordPress应该为您做到这一点。

结束