web-dev-qa-db-fra.com

Exécuter un shortcode en cliquant sur une image

J'ai posé cette question dans stackovorflow sous javascript et on m'a informé que c'était impossible, alors j'essaie ici

J'ai un shortcode pour un formulaire d'inscription et je veux qu'il apparaisse quand une image est cliquée

J'ai essayé la fonction dans les fichiers Header Scripts et functions.php.

<img src="someimage.png" onclick="executeShortCode()" /> 

<script> 
function executeShortCode() {
<?php echo do_shortcode('[yourshortcode]'); ?>
}
</script>
1
xyz

C'est certainement possible, mais vous envisagez probablement de faire une requête ajax sur le clic sur l'image, qui exécute à son tour le code court et renvoie la sortie. Cela implique trois étapes distinctes: lier la demande ajax à une action, exécuter la demande ajax et gérer la réponse, et écrire le script qui traitera la demande. Cette réponse ne couvrira pas tous les frais généraux nécessaires, vous devrez localiser correctement votre script pour générer l’URL correcte à publier, vous devrez ajouter des vérifications pour vous assurer que la demande est légitime, cela ne devrait pas juste être copié/collé.

Gestion du clic (js)

jQuery(document).ready(function($) {
    $('#my_image_id').on('click',function() {
        // you need to, at a minimum, include a nonce here as well
        var data = {
            action: 'process_shortcode_on_image_click'
        }
        // change '/wp-admin/admin-ajax.php to the correct variable generated by wp_localize_script()
        $.post('/wp-admin/admin-ajax.php',data).done(function(response) {
            // do whatever you want with response, it will contain the shortcode output
            // maybe something like $('#my_popup_id').html(response);
        });
    })
})

Accrocher la requête à des actions

Cela peut aller dans functions.php ou un plugin, quelque chose qui sera exécuté à chaque chargement de page.

// these call the appropriate function based on the action passed from the data object in the js
add_action( 'wp_ajax_process_shortcode_on_image_click_action', 'process_shortcode_on_image_click_ajax');
add_action( 'wp_ajax_nopriv_process_shortcode_on_image_click_action', 'process_shortcode_on_image_click_ajax');

Traitement de la requête ajax

Cela peut aller dans functions.php ou un plugin, quelque chose qui sera exécuté à chaque chargement de page.

function process_shortcode_on_image_click_ajax() {
    // you should check for a nonce and do other validation here to make sure this is a legit request
    echo do_shortcode('[yourshortcode]');
    die();
}

Pour plus d'informations, voir Gestion d'Ajax dans les plugins du Codex et de la documentation sur wp_localize_script

3
Andrew Bartel

J'avais le même problème. D'une manière ou d'une autre, j'ai pu le résoudre en utilisant le plugin suivant

https://wordpress.org/plugins/anything-popup/

Vous pouvez donner popup title/link/image et dans le contenu, faire écho le shortcode du formulaire. et appelez le shortcode contextuel où le texte/lien/image est placé. En cliquant sur l'un de ces éléments, une fenêtre contextuelle avec le contenu requis apparaîtra.

0
geek_girl