web-dev-qa-db-fra.com

Obtenir php var dans le fichier javascript (making plugin)

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

4
Met El Idrissi

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
8
Andrew Bartel

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.

2
Manu