javascript - WordPress wp_localize_script:JS脚本无法识别PHP变量
问题描述
我正在尝试通过我的子主题在我的 WordPress中修改脚本( ajaxcalls.js )。我在子主题( ajaxcalls_child.js)中创建了该文件的副本。
我在function.php文件中添加了以下代码,以便将旧 JS 文件出列,将新文件入队并传递ajaxcalls_vars
ajaxcalls_child.js 使用的变量:
<?php
//made sure here that the action execute after all the other scripts are loaded
add_action('wp_enqueue_scripts', 'wpestate_load_child_scripts', 100);
function wpestate_load_child_scripts() {
wp_dequeue_script('wpestate_ajaxcalls');
wp_enqueue_script('ajaxcalls_child', get_stylesheet_directory_uri().'/js/ajaxcalls_child.js', array('jquery'),'1.0', true);
wp_localize_script(‘ajaxcalls_child’, ‘ajaxcalls_vars’, array(
'contact_name' => esc_html__( 'Your Name','wprentals'),
'contact_email' => esc_html__( 'Your Email','wprentals'),
'contact_phone' => esc_html__( 'Your Phone','wprentals'),
'contact_comment' => esc_html__( 'Your Message','wprentals'),
'adv_contact_name' => esc_html__( 'Your Name','wprentals'),
'adv_email' => esc_html__( 'Your Email','wprentals'),
'adv_phone' => esc_html__( 'Your Phone','wprentals'),
'adv_comment' => esc_html__( 'Your Message','wprentals'),
'adv_search' => esc_html__( 'Send Message','wprentals'),
'admin_url' => get_admin_url(),
'login_redirect' => $login_redirect,
'login_loading' => esc_html__( 'Sending user info, please wait...','wprentals'),
'userid' => $userID,
'prop_featured' => esc_html__( 'Property is featured','wprentals'),
'no_prop_featured' => esc_html__( 'You have used all the "Featured" listings in your package.','wprentals'),
'favorite' => esc_html__( 'Favorite','wprentals').'<i class="fas fa-heart"></i>',
'add_favorite' => esc_html__( 'Add to Favorites','wprentals'),
'remove_favorite' => esc_html__( 'remove from favorites','wprentals'),
'add_favorite_unit'=> esc_html__( 'add to favorites','wprentals'),
'saving' => esc_html__( 'saving..','wprentals'),
'sending' => esc_html__( 'sending message..','wprentals'),
'reserve' => esc_html__( 'Reserve Period','wprentals'),
'paypal' => esc_html__( 'Connecting to Paypal! Please wait...','wprentals'),
'stripecancel' => esc_html__( 'subscription will be cancelled at the end of the current period','wprentals'),
'max_month_no' => intval ( get_option('wp_estate_month_no_show','') ),
'processing' => esc_html__( 'processing..','wprentals'),
'home' => get_site_url(),
'delete_account' => esc_html__('Confirm your ACCOUNT DELETION request! Clicking the button below will result your account data will be deleted. This means you will no longer be able to login to your account and access your account information: My Profile, My Reservations, My bookings, Invoices. This operation CAN NOT BE REVERSED!','wprentals'),
'adv_search_what_half' => $adv_search_what_half,
'adv_search_how_half' => $adv_search_how_half,
'adv_search_type' => $adv_search_type
));
}
现在,在我访问我的网站后,我可以看到旧脚本已被新脚本替换,但我可以在 chrome 控制台上看到,只要新脚本中的函数需要它,ajaxcalls_vars 就没有定义。
chrome控制台上的错误
所以新脚本在那里,但我的变量ajaxcalls_vars
没有根据ajaxcalls_child.js定义,因此,我认为我尝试将该变量传递给新脚本的方式有问题。
在查看了类似的问题之后,我理解了其他类型的错误,并尝试将该代码改进到我上面分享的那个。但仍然无法正确处理。
解决方案
您在前 2 个参数周围的单wp_localize_script(‘ajaxcalls_child’, ‘ajaxcalls_vars’, array(...
引号不是真正的单引号。尝试删除它们并用'
字符替换wp_localize_script('ajaxcalls_child', 'ajaxcalls_vars', array(...
一旦我这样做了,该对象就可以在入队脚本中使用(在 xampp wp 5.0 上测试)
推荐阅读
- oracle - 循环异常
- asp.net-core - HttpGet中name属性有什么用(如[HttpGet("/products2/{id}", Name = "Products_List")])
- akka - Akka 持久性:没有足够的 JDBC MySQL 工作示例
- wso2 - WS02 身份服务器用户会话端点
- python - 添加当前时间并更改json结构数据python
- sql - 如何创建将新记录添加到表中的函数?甲骨文
- spartacus-storefront - 斯巴达克斯:从多站点根目录中删除尾部斜杠
- react-native - 错误:命令失败:gradlew.bat app:installDebug -PreactNativeDevServerPort=8081(如何修复?)
- mysql - 一起编写sql join和单独编写sql join有什么区别?
- flutter - 如何在 Flutter 中集成 Microsoft Graph API 并从 Microsoft Azure Active Directory 中获取用户的对象 ID?