Ошибка "ajax_custom не определена" при использовании wp_localize_script в jQuery

15 июл. 2013 г., 10:15:54
Просмотры: 14.8K
Голосов: 3

Я пытаюсь загрузить запись с помощью Ajax.

functions.php:

function my_action_callback() {
        wp_localize_script('jscustom', 'ajax_custom', array(
            'ajaxurl' => admin_url('admin-ajax.php')
        ));
        wp_enqueue_script('jscustom');
}
add_action('wp_ajax_my_action', 'my_action_callback');

jQuery код в custom.js:

jQuery(window).load(function() {
    var morebutton = jQuery('#load-more'),
        archive = morebutton.rel,
        deftext = morebutton.text(),
        page = 1;

    morebutton.click(function(e){
        e.preventDefault();
        page++; 

    morebutton.text(ajax_custom.loading);
    jQuery.post(ajax_custom.ajaxurl, {action:'load_more', page:page, archive:archive}, function(data){...

Когда я нажимаю кнопку "загрузить еще", я получаю ошибку:

ReferenceError: ajax_custom is not defined (ajax_custom не определена)

В чем проблема?

0
Все ответы на вопрос 1
0
11

wp_localize_script следует вызывать ПОСЛЕ wp_enqueue_script:

ВАЖНО!: wp_localize_script() ДОЛЖЕН вызываться после того, как скрипт, к которому он прикрепляется, был поставлен в очередь (enqueued) или зарегистрирован. Эта функция не помещает локализованный скрипт в очередь для последующих скриптов.

Исправьте в вашей функции:

function my_action_callback() {
wp_enqueue_script('jscustom'); // Предполагаю, что вы зарегистрировали его где-то еще
wp_localize_script('jscustom', 'ajax_custom', array(
   'ajaxurl' => admin_url('admin-ajax.php')
));

}

Вы всегда можете проверить в <head> вашей страницы, видите ли вы вашу переменную.

15 июл. 2013 г. 10:30:25