WordPress wp_localize_script: переменная PHP не распознается сценарием JS - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь изменить скрипт ( ajaxcalls.js ) в моем WordPress через мою дочернюю тему.Я создал дубликат файла в дочерней теме ( 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

Error on the chrome console

Итак, новый скрипт есть, но моя переменная ajaxcalls_vars не определена в соответствии с ajaxcalls_child.js , поэтому я думаю, что что-то не так в том, как я пытаюсь передать эту переменную в новый скрипт.

Посмотрев на похожую проблему, я понял другой тип ошибки и попытался улучшить этот код до того, который я описал выше.Но до сих пор не могу сделать это правильно.

1 Ответ

0 голосов
/ 23 декабря 2018

Ваши одинарные кавычки вокруг первых 2 аргументов в wp_localize_script(‘ajaxcalls_child’, ‘ajaxcalls_vars’, array(... не являются реальными одинарными кавычками.Попробуйте удалить их и заменить на ' символ wp_localize_script('ajaxcalls_child', 'ajaxcalls_vars', array(.... После того, как я это сделал, объект будет доступен в сценарии с постановкой в ​​очередь (проверено на xampp wp 5.0)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...