Apelarea unui shortcode în JavaScript

3 sept. 2012, 20:27:48
Vizualizări: 25.5K
Voturi: 4

Vreau să afișez un shortcode prin jQuery după ce DOM-ul este încărcat:

Acesta este modul în care apelez shortcode-ul: <?php echo do_shortcode('[plugin]'); ?>

Acum, întrebarea mea este cum pot să apelez acel shortcode în interiorul unei funcții jQuery, deoarece site-ul meu se bazează pe apeluri jQuery/AJAX? Mulțumesc!

1
Comentarii

Te rugăm să cauți pe site. Pur și simplu folosești _doing_it_wrong(). Nu este nevoie să apelezi un shortcode - apelează direct funcțiile de bază/callback-urile AJAX sau accesează obiectul localizat (dacă există unul disponibil).

kaiser kaiser
3 sept. 2012 20:46:36
Toate răspunsurile la întrebare 1
0

Codul Javascript rulează în browser-ul utilizatorului și nu pe serverul tău (unde se află conținutul WordPress). Poți folosi AJAX pentru a apela funcția la care se referă shortcode-ul.

Iată cum gestionez apelurile AJAX în WordPress:

1) Folosesc o funcție jQuery AJAX pentru a apela 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){
        //fă ceva cu rezultatele shortcode-ului în DOM
    },
    error: function(errorThrown){console.log(errorThrown);}
});// sfârșitul apelului ajax

2) Acest cod PHP se află în fișierul functions.php al temei tale sau într-un plugin personalizat:

//acesta este AJAX WordPress care poate funcționa în zona publică și administrativă
add_action('wp_ajax_nopriv_your_ajax', 'your_ajax_function');
add_action('wp_ajax_your_ajax', 'your_ajax_function');
function your_ajax_function(){
     // prima parte este un "SWITCHBOARD" care lansează funcții specifice în funcție de valoarea variabilei '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 = 'Nicio funcție specificată.';
        break;

     }

   // în acest punct, $output conține date pe care dorești să le returnezi
   // Acum, convertește $output în JSON și afișează-l în browser
   // Astfel, îl putem captura cu jQuery și rula funcția de succes

          $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);
}   

Sper că acest lucru te îndreaptă în direcția corectă.

4 sept. 2012 03:22:04