Solución: wp_localize_script - variable no definida en jQuery

15 jul 2013, 10:15:54
Vistas: 14.8K
Votos: 3

Intento cargar una publicación con 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');

Código jQuery en 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){...

Cuando presiono el botón "cargar más", obtengo un error:

ReferenceError: ajax_custom no está definido

¿Qué está mal?

0
Todas las respuestas a la pregunta 1
0
11

wp_localize_script debe llamarse DESPUÉS de wp_enqueue_script:

¡IMPORTANTE!: wp_localize_script() DEBE llamarse después de que el script al que está vinculado haya sido encolado o registrado. No coloca el script localizado en una cola para scripts posteriores.

Corrígelo en tu función:

function my_action_callback() {
wp_enqueue_script('jscustom'); // Asumo que lo registraste en otro lugar
wp_localize_script('jscustom', 'ajax_custom', array(
   'ajaxurl' => admin_url('admin-ajax.php')
));

}

Siempre puedes verificar en el <head> de tu página si ves tu variable.

15 jul 2013 10:30:25