Cómo ejecutar shortcode con JavaScript

2 oct 2017, 17:15:50
Vistas: 28.2K
Votos: 4

Supongamos que tenemos este shortcode:

[spu-close class="" text="" align=""]

Quiero mostrar este shortcode cuando hago clic en un botón, este es mi HTML:

<input class="button b" onclick="openFile(link);" type="button" value="download" />

Y este es mi archivo JavaScript:

function openFile(link){
//Quiero hacer algo como esto
    do_shortcode('[spu-close class="" text="" align=""]', false );
    //  

}

No sé cómo puedo hacer esto, ¿alguien puede ayudarme?

1
Comentarios

No estoy seguro si esto es siquiera posible, ya que un shortcode está hecho en PHP, y PHP es del lado del servidor. Y Javascript es del lado del cliente. Deberías poder ejecutar esta función en PHP sin embargo.

Menno van der Krift Menno van der Krift
2 oct 2017 17:19:22
Todas las respuestas a la pregunta 1
1

Para ejecutar un "ShortCode" que está en el lado del servidor (WordPress/PHP) desde JavaScript que está en el lado del cliente, necesitarás usar AJAX.

Puedes usar algo como:

1- En tu archivo .js en cola:

jQuery(document).ready(function($) {
    $('.buttonClass').on('click', function() {
        $.ajax({
            url: Param.doShortCode,
            type: 'POST',
            data: {
                action: 'handle_ajax_shortcode',
            },
            success: function() {
                //hacer algo en caso de éxito
            },
            error: function() {
                //hacer algo en caso de error
            }
        })
    })
});

2- En el archivo php:

//localiza tu script
$Param = array(

  'doShortCode'=>admin_url( 'admin-ajax.php' ),
      
);
wp_localize_script('handle_ajax_shortcode','Param', $Param);

//se ejecuta para usuarios no logueados
add_action( 'wp_ajax_nopriv_handle_ajax_shortcode', 'handle_ajax_shortcode' );
//se ejecuta para usuarios logueados
add_action( 'wp_ajax_handle_ajax_shortcode', 'handle_ajax_shortcode' );


function handle_ajax_shortcode(){
  //coloca aquí lo que quieras ejecutar cuando se active el evento JavaScript
  do_shortcode( string $content, bool $ignore_html = false )
  // No olvides detener la ejecución después
  wp_die();

}

Para más información puedes consultar Enlace1 & Enlace2 & Enlace3

2 oct 2017 19:40:44
Comentarios

Un usuario anónimo señala que estás configurando la acción dos veces: una en la URL y otra en el cuerpo de la publicación.

Rup Rup
13 feb 2024 17:46:04