个性化阅读
专注于IT技术分析

WordPress wp_localize_script:JS脚本无法识别PHP变量

点击下载

我正在尝试通过子主题修改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控制台上的错误

Chrome控制台上的错误

因此存在新脚本, 但是未根据ajaxcalls_child.js定义我的变量ajaxcalls_vars, 因此, 我认为我尝试将该变量传递给新脚本的方式存在问题。

在研究了类似的问题之后, 我理解了其他类型的错误, 并尝试将该代码改进为我上面共享的错误。但是仍然无法做到正确。


#1


你在wp_localize_script(‘ajaxcalls_child’, ‘ajaxcalls_vars’, array(…)的前两个参数周围的单引号不是真正的单引号。尝试删除它们并替换为’字符wp_localize_script(‘ajaxcalls_child’, ‘ajaxcalls_vars’, array (…一旦我做到了, 该对象就可以在排队的脚本中使用(在xampp wp 5.0上进行了测试)

赞(0)
未经允许不得转载:srcmini » WordPress wp_localize_script:JS脚本无法识别PHP变量

评论 抢沙发

评论前必须登录!