Cómo pasar parámetros A un shortcode en WordPress

12 jun 2017, 13:26:17
Vistas: 15.8K
Votos: 2

He visto artículos sobre cómo agregar parámetros a shortcodes, para poder usar algo como [my-shortcode post_id=7] y pasar un ID de post al shortcode.

Supongamos que tengo un formulario en mi página y el usuario ingresa o selecciona algo. Basado en eso, quiero actualizar el contenido representado por el shortcode usando parámetros proporcionados por el usuario.

¿Cómo se logra esto?

0
Todas las respuestas a la pregunta 2
1

Digamos que tienes un formulario que envía los datos de la siguiente manera:

<form method="post" name="car-select" action="<?php echo site_url('/mi-pagina/'); ?>">
    <select name="make">
        <option value="benz">Mercedes Benz</option>
        <option value="bmw">BMW</option>
        <option value="audi">Audi</option>
    </select>
    <input type="submit" value="¡Encuentra mi auto soñado!"/>
</form>

Ahora quieres consultar algunas publicaciones basadas en la elección del usuario, ¿verdad? Aquí es donde $_POST resulta útil:

add_shortcode('my-shortcode','my_shortcode_function');
function my_shortcode_function($atts){
    // Obtener el ID del shortcode
    $id = $atts['post_id'];
    // Verificar si se han enviado los datos del formulario
    if (isset($_POST['make']) && $id){
        $car_manufacturer = $_POST['make'];
        // Ahora tienes los datos del formulario. Haz lo que quieras con ellos
        return $my_shortcode_values;
    }
}

Debes extender este código para adaptarlo a tus necesidades, como definir qué hacer si no hay datos del formulario.

12 jun 2017 14:41:12
Comentarios

Puedo ver que esto responde a mi pregunta, pero no necesito pasar un parámetro al shortcode, la función solo tiene que obtener los datos POST y hacer algo con ellos.

Russell Eubanks Russell Eubanks
13 jun 2017 18:57:07
0

Vale la pena señalar que si usas $_GET en su lugar. El valor permanecerá incluso si el usuario actualiza (F5) la página.

if (isset($_GET ['make']) && $id){
        $car_manufacturer = $_GET ['make'];
        // Ahora, tienes los datos del formulario. Haz lo que quieras con ellos
        return $my_shortcode_values;
    }
13 jun 2023 10:25:08