Passa la variabile PHP su javascript


13

C'è qualche possibilità di passare alcune variabili PHP in javascript in modo da poterle utilizzare in seguito?

Solo in single.php.
Ne ho sentito parlare wp_enqueue_scriptsma con ciò è necessario dichiarare un percorso a un file JS, ma non ne ho bisogno.


Cosa intendi in seguito , e dove vuoi usare le variabili (rispetto a dove sono le variabili PHP)? Ovviamente puoi echo / stampare il codice JavaScript tramite PHP e quindi inserire i valori delle variabili PHP. Ma questo non è quello che vuoi, immagino ...
da

Ho creato una nuova tabella db con alcuni response.id`s da facebook api. Questa è la tabella: action_id, user_id, post_id, fb_id dove fb_id è response.id da un'azione di Facebook. Quindi in single.php ho un pulsante in cui se premo devo eliminare l'azione fb con api: FB.api ('/' + fb.response, 'delete'); dove fb.response dovrebbe essere fb_id dalla tabella.
Sebastian Corneliu Vîrlan,

Risposte:


18

Metodo delle migliori pratiche

Dai un'occhiata wp_localize_script, che dovrebbe fare esattamente questo.

Ma richiede un utilizzo precedente diwp_enqueue_scripts , quindi dovrai spostare il tuo JS in un file separato.
Vale sicuramente la pena di quei pochi minuti di sforzo.

function wpse_96370_scripts()
{
    if ( is_single() ) {

        wp_register_script(
           'your_script_handle',
           get_template_directory_uri() . '/js/your-script.js',
           array( /* dependencies*/ ),
           1.0,
           true
       );

       wp_enqueue_script( 'your-script-handle' );

       $script_params = array(
           /* examples */
           'post' => 99,
           'users' => array( 1, 20, 2049 )
       );

       wp_localize_script( 'your-script-handle', 'scriptParams', $script_params );

    }
}
add_action( 'wp_enqueue_scripts', 'wpse_96370_scripts' );

In JS sarai quindi in grado di utilizzare i parametri passati in questo modo:

var posts = scriptParams.post,
    secondUser = scriptParams.users[1]; /* index starts at 0 */

// iterate over users
for ( var i = 0; i < scriptParams.users.length; i++ ) {
    alert( scriptParams.users[i] );
}

[Modifica] La tua situazione

Come da tuo commento

Ho creato una nuova tabella db con alcune response.ids di api di facebook. Questa è la tabella: action_id, user_id, post_id, fb_id dove fb_id è response.id da un'azione di Facebook. Quindi in single.php ho un pulsante in cui se premo devo eliminare l'azione fb con api: FB.api('/'+fb.response, 'delete');dove fb.responsedovrebbe essere fb_iddalla tabella.

Inserisci la seguente /js/cartella del tuo tema , creala, se non esiste.
Chiamiamo il file fb-response.js:

jQuery( '#button_id' ).click( function() {
    FB.api( '/' + fbParams.id, 'delete' );
});

Quindi registrati, accodati e localizza come visto sopra. Supponendo che tu abbia l'ID che desideri trasmettere, diciamo $fb_id:

wp_register_script(
    'fb-response',
     get_template_directory_uri() . '/js/fb-response.js',
     array( 'jquery' ),
     1.0,
     true
);

wp_enqueue_script( 'fb-response' );

wp_localize_script( 'fb-response', 'fbParams', array( 'id' => $fb_id ) );

NB Ovviamente, quanto sopra presuppone che questo sia in tema. Se stiamo parlando di "plugin", modifica le posizioni di conseguenza.


Sono un po 'mendicante in questo, quindi cerco di implementarlo nel mio wordpress: papermashup.com/jquery-iphone-style-ajax-switch . Come puoi vedere c'è un file js e alcune righe di codice js da inserire nel file di utilizzo. O posso mettere quelle poche righe di codice su un altro file?
Sebastian Corneliu Vîrlan,

Quindi per qualsiasi piccola azione javascript dovrei creare un file? Se sei disponibile puoi aggiungere su skype: sebyku17?
Sebastian Corneliu Vîrlan,

Dipende da cosa vuoi fare, dove vuoi farlo e così via. Generalmente: No, non è necessario utilizzare un file JS esterno. Ma se lo desideri, puoi inserire quello che vuoi all'interno di un singolo file . Non hai bisogno di più file se hai più funzioni, se è quello che stavi chiedendo. Tuttavia, hai già accettato questa risposta (abbastanza complessa e nel tuo caso un po ' eccessiva di) una risposta - senza averlo compreso appieno, come ritengo io. Senza offesa, @Johannes. ;)
martedì

1
Nessuno preso, @tf. Finora potrebbe essere un limite eccessivo, ma per uno il suo codice potrebbe crescere e per un altro, la domanda iniziale parlava di "variabili", in forma plurale. La tua risposta è altrettanto valida, quindi +1 da parte mia.
Johannes Pille,

2
wp_localize_script è una funzione molto poco utilizzata e potente per passare valori PHP a un file Javascript. È sorprendente che non molte persone sappiano davvero di questa potente funzionalità di Wordpress.
Dwayne Charrington,

1

Dopo aver letto il tuo commento, capisco che ti piacerebbe fare qualcosa del genere:

// Do something to get the ID
$facebook_id = ...

// Create and print the button
echo '<input onclick="FB.api('/'+'.$facebook_id.', 'delete')" />';

No, questa è la pagina in cui lavoro: funny-videoro.com/the-dark-knight-rises-trailer-oficial . Se lo desideri, puoi accedere al sito Web. Quindi vedrai un pulsante jos in stile ios. Quando scorro su off devo eliminare con fb api un post. L'ID post è nel db.
Sebastian Corneliu Vîrlan,

Bene, questo è fondamentalmente quello che ho scritto nella mia risposta. Recupera l'id dal database e memorizzalo in una variabile. Quindi stampalo direttamente nella tua chiamata di funzione JavaScript a una riga. La <input ... />sua funzione era solo a scopo dimostrativo. Per quanto ti ho capito, c'è tutto ciò di cui hai bisogno. In caso contrario, prova a spiegarne un po 'di più, ma nella tua domanda, non nei commenti.
martedì

Non voglio usare i codici php e js nella stessa riga, in wordpress alcune funzioni automaticamente ...
Sebastian Corneliu Vîrlan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.