web-dev-qa-db-fra.com

appelez shortcode en javascript

Je veux afficher un shortcode via jquery après le chargement du DOM:

Voici comment j'appelle le shortcode: <?php echo do_shortcode('[plugin]'); ?>

Maintenant, ma question est: comment puis-je appeler ce shortcode dans une fonction jquery, car mon site Web est basé sur des appels jquery/ajax? Merci!

1
agis

Le code Javascript est exécuté dans le navigateur de l'utilisateur et non sur votre serveur (où réside votre contenu wordpress). Vous pouvez utiliser ajax pour appeler la fonction sur laquelle le shortcode pointe.

Voici comment je gère les appels AJAX avec Wordpress:

1) J'utilise une fonction ajax jQuery pour appeler wp-admin/ajax.php

jQuery.ajax({
    url: yourSiteUrl + "/wp-admin/admin-ajax.php",
    dataType: 'json',
    data: {
       'action':'your_ajax',
       'fn':'run_shortcode_function',
       'some_needed_value': jQuery('#input_for_needed_value').val()
       },
    success: function(results){
        //do something with the results of the shortcode to the DOM
    },
    error: function(errorThrown){console.log(errorThrown);}
});// end of ajax

2) Ce code PHP se trouve dans le fichier functions.php de votre thème ou dans un plugin personnalisé:

//this is wordpress ajax that can work in front-end and admin areas
add_action('wp_ajax_nopriv_your_ajax', 'your_ajax_function');
add_action('wp_ajax_your_ajax', 'your_ajax_function');
function your_ajax_function(){
     // the first part is a SWTICHBOARD that fires specific functions according to the value of Query Variable 'fn'

     switch($_REQUEST['fn']){
        case 'run_shortcode_function':
           $output = your_ajax_shortcode_function($_REQUEST['some_needed_value']);
           break;
        case 'some_other_function_you_want_to_perform':   
           $output = some_other_function($_REQUEST['first_name'],$_REQUEST['last_name']);
            break;
        default:
          $output = 'No function specified.';
        break;

     }

   // at this point, $output contains some sort of data that you want back
   // Now, convert $output to JSON and echo it to the browser
   // That way, we can recapture it with jQuery and run our success function

          $output=json_encode($output);
         if(is_array($output)){
        print_r($output);
         }
         else{
        echo $output;
         }
         die;

}
your_ajax_shortcode_function($some_needed_value){
     return the_specific_function_that_the_shortcode_was_pointing_to($some_needed_value);
}   

J'espère que cela vous oriente dans la bonne direction.

3
Douglas.Sesar