我正在尝试通过子主题修改WordPress中的脚本(ajaxcalls.js)。我在子主题(ajaxcalls_child.js)中创建了该文件的副本。
我在function.php文件中添加了以下代码, 以使旧的JS文件出队, 使新的JS文件入队, 并传递ajaxcalls_child.js使用的变量ajaxcalls_vars:
<
?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_child.js定义我的变量ajaxcalls_vars, 因此, 我认为我尝试将该变量传递给新脚本的方式存在问题。
在研究了类似的问题之后, 我理解了其他类型的错误, 并尝试将该代码改进为我上面共享的错误。但是仍然无法做到正确。
#1 【WordPress wp_localize_script(JS脚本无法识别PHP变量)】你在wp_localize_script(‘ ajaxcalls_child’ , ‘ ajaxcalls_vars’ , array(… )的前两个参数周围的单引号不是真正的单引号。尝试删除它们并替换为’ 字符wp_localize_script(‘ ajaxcalls_child’ , ‘ ajaxcalls_vars’ , array (… 一旦我做到了, 该对象就可以在排队的脚本中使用(在xampp wp 5.0上进行了测试)
推荐阅读
- WordPress wp_nav_menu()定制和过滤
- WordPress wp_login钩子无法正常工作
- #yyds干货盘点# 使用 exe4j 将 jar 包生成 .exe 文件(敲详细)
- maven项目打包插件(将maven项目打包成一个可执行的jar(瘦jar))
- #yyds干货盘点#我对Redis持久化 做了一个全面的总结
- TypeScript 之 More on Functions
- Java编程中忽略这些细节,Bug肯定找上你
- Python 进阶 — Flake8 静态代码检查工具
- 如何理解Debian仓库地址