wp_localize_script - Variabile non definita in jQuery

15 lug 2013, 10:15:54
Visualizzazioni: 14.8K
Voti: 3

Provo a caricare un post con Ajax.

functions.php:

function my_action_callback() {
        // Localizza lo script e passa variabili PHP a JavaScript
        wp_localize_script('jscustom', 'ajax_custom', array(
            'ajaxurl' => admin_url('admin-ajax.php'),
            'loading' => __('Caricamento in corso...', 'textdomain') // Aggiunto testo di caricamento
        ));
        wp_enqueue_script('jscustom');
}
add_action('wp_ajax_my_action', 'my_action_callback');

Codice jQuery in 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); // Usa la variabile localizzata
        jQuery.post(ajax_custom.ajaxurl, {action:'load_more', page:page, archive:archive}, function(data){...

Quando premo il pulsante "carica altri", ottengo un errore:

ReferenceError: ajax_custom non è definito

Cosa c'è che non va?

0
Tutte le risposte alla domanda 1
0
11

wp_localize_script dovrebbe essere chiamato DOPO wp_enqueue_script:

IMPORTANTE!: wp_localize_script() DEVE essere chiamato dopo che lo script a cui viene associato è stato accodato o registrato. Non mette lo script localizzato in una coda per script successivi.

Correggi nella tua funzione:

function my_action_callback() {
wp_enqueue_script('jscustom'); // Presumo che tu l'abbia registrato altrove
wp_localize_script('jscustom', 'ajax_custom', array(
   'ajaxurl' => admin_url('admin-ajax.php')
));

}

Puoi sempre verificare nell'<head> della tua pagina se vedi la tua variabile.

15 lug 2013 10:30:25