web-dev-qa-db-fra.com

Impossible d'obtenir le code JS pour fonctionner avec le shortcode

J'essaie de créer un plugin et je suis coincé. J'essaie de m'inscrire et de mettre en file d'attente un script à partir d'un shortcode:

C'est mon shortcode:

add_shortcode( 'gear-guide', 'gg_product_front_end' );

C'est la fonction à laquelle il appelle:

function gg_product_front_end() {

    echo '<p id="test">Test!</p>';

    wp_register_script( 'gg_loadProducts_frontEnd', plugins_url( 'js/front_end.js', __FILE__ ), array( 'jquery' ));
    wp_enqueue_script( 'gg_loadProducts_frontEnd' );

}

Et c'est le JavaScript:

function gg_loadProducts_frontEnd() {
    console.log( 'Test!' );
}

JavaScript ne fonctionne pas, mais je ne reçois aucune erreur, ni php ni js.

2
Omer

Vous devez renvoyer la chaîne générée par Shortcode, et non pas echo, comme ceci:

function gg_product_front_end() {
    wp_register_script( 'gg_loadProducts_frontEnd', plugins_url( 'js/front_end.js', __FILE__ ), array( 'jquery' ));
    wp_enqueue_script( 'gg_loadProducts_frontEnd' );

    return '<p id="test">Test!</p>';
}

En outre, vous devez appeler la fonction JavaScript, comme ceci:

function gg_loadProducts_frontEnd() {
    console.log( 'Test!' );
}
gg_loadProducts_frontEnd();

Sinon, Test! ne sera pas enregistré dans la console du navigateur.

En outre, cochez This Post pour mettre en file d'attente les scripts/styles lorsque le shortcode est présent.

2
Fayaz