Llamar shortcode en javascript

3 sept 2012, 20:27:48
Vistas: 25.5K
Votos: 4

Quiero mostrar un shortcode a través de jQuery después de que el DOM esté cargado:

Así es como llamo al shortcode: <?php echo do_shortcode('[plugin]'); ?>

Ahora, mi pregunta es ¿cómo puedo llamar ese shortcode dentro de una función jQuery, ya que mi sitio web está basado en llamadas jQuery/AJAX? ¡Gracias!

1
Comentarios

Por favor busca en el sitio. Simplemente estás _doing_it_wrong(). No hay necesidad de llamar a un shortcode - solo llama a las funciones subyacentes/callbacks AJAX o accede al objeto localizado (si hay uno disponible).

kaiser kaiser
3 sept 2012 20:46:36
Todas las respuestas a la pregunta 1
0

El código Javascript se ejecuta en el navegador del usuario y no en tu servidor (donde reside tu contenido de WordPress). Podrías usar ajax para llamar a la función a la que apunta el shortcode.

Así es como manejo las llamadas AJAX con WordPress:

1) Utilizo una función jQuery ajax para llamar a 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){
        //hacer algo con los resultados del shortcode en el DOM
    },
    error: function(errorThrown){console.log(errorThrown);}
});// fin del ajax

2) Este código PHP se encuentra en el archivo functions.php de tu tema o en un plugin personalizado:

//este es el ajax de WordPress que puede funcionar en front-end y áreas de administración
add_action('wp_ajax_nopriv_your_ajax', 'your_ajax_function');
add_action('wp_ajax_your_ajax', 'your_ajax_function');
function your_ajax_function(){
     // la primera parte es un PANEL DE CONTROL que ejecuta funciones específicas según el valor de la Variable de Consulta '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 se especificó ninguna función.';
        break;

     }

   // en este punto, $output contiene algún tipo de dato que deseas devolver
   // Ahora, convierte $output a JSON y envíalo al navegador
   // De esa manera, podemos recapturarlo con jQuery y ejecutar nuestra función de éxito

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

Espero que esto te oriente en la dirección correcta.

4 sept 2012 03:22:04