Je faisais un plugin et j'ai un fichier javascript dans lequel je veux prendre quelques options sauvegardées dans la base de données pour bien montrer la fonction.
Donc j'ai ceci:
function wp_home(){
wp_enqueue_script( 'some-name-1', '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', '1.0.0', true );
wp_enqueue_style( 'some-name-2', plugins_url( 'assets/jquery.something.css', __FILE__ ) );
wp_enqueue_script( 'some-name-3', plugins_url( 'assets/jquery.something.js', __FILE__ ), '1.0.0', true );
global $table_prefix;
$dbh = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_Host );
$table = $table_prefix.'options';
$qd = "SELECT option_value FROM $table WHERE option_name = 'description'";
$description = $dbh->get_results( $query_link );
$description = $description[0]->option_value;
//HERE I HAVE THE STRING OF $description AND I WANT TO PASS INSIDE TO CUSTOM-JS-PHP
wp_enqueue_script( 'custom-name-js', plugins_url( 'assets/custom-js.php', __FILE__ ), '1.0.0', true );
}
Le fichier custom-js.php c'est comme ça:
<?php header("Content-type: text/javascript"); ?>
$(document).ready(function(){
$.showBox({
message: '<?php echo $description; ?>',
});
});
Comment puis-je prendre la description de $? Si je mets le javascript dans wp_home (), cela ne fonctionne pas.
Merci
Vous pouvez utiliser wp_localize_script () pour transmettre des variables php à javascript. Vous créez un tableau dans php, puis vous le transmettez à la fonction en tant que troisième paramètre. Il apparaîtra comme un objet que vous nommerez avec le deuxième paramètre.
Tout d'abord, enregistrez le script.
wp_register_script( 'custom-name-js', plugins_url( 'assets/custom-js.php', __FILE__ ) );
Deuxièmement, construisez votre tableau et exécutez wp_localize.
$my_array = array( 'description' => $description[0]->option_value );
wp_localize_script( 'custom-name-js', 'js_object_name', $my_array );
Enfin, vous mettez en file d'attente votre script.
wp_enqueue_script( 'custom-name-js' );
Ensuite, dans votre fichier js, vous aurez un objet js nommé js_object_name (ou tout ce que vous transmettez comme second paramètre à wp_localize_script) avec une propriété de description.
js_object_name.description
Vous pouvez essayer cette fonction: wp_localize_script( $handle, $name, $data );
Voir https://codex.wordpress.org/Function_Reference/wp_localize_script pour obtenir de la documentation.
Comme le dit le codex:
Bien que la localisation soit la principale utilisation, elle peut être utilisée pour rendre disponibles à votre script toutes les données que vous ne pouvez normalement obtenir que du côté serveur de WordPress.
Je devais l'utiliser pour la traduction/la localisation, mais il semble que cela puisse vous aider à "injecter" votre valeur dynamique dans le javascript.