Come si passano i parametri A uno shortcode?

12 giu 2017, 13:26:17
Visualizzazioni: 15.8K
Voti: 2

Ho visto articoli su come aggiungere parametri agli shortcode, in modo da poter fare qualcosa come [my-shortcode post_id=7], per passare un ID di un post a uno shortcode.

Supponiamo di avere un modulo nella mia pagina e l'utente inserisce qualcosa o seleziona qualcosa e in base a ciò voglio aggiornare il contenuto rappresentato dallo shortcode utilizzando i parametri forniti dall'utente.

Come si può realizzare questo?

0
Tutte le risposte alla domanda 2
1

Supponiamo tu abbia un modulo che invia i dati nel seguente modo:

<form method="post" name="car-select" action="<?php echo site_url('/my-page/'); ?>">
    <select name="make">
        <option value="benz">Benz</option>
        <option value="bmw">BMW</option>
        <option value="audi">Audi</option>
    </select>
    <input type="submit" value="Trova la mia auto dei sogni!"/>
</form>

Ora vuoi interrogare alcuni post in base alla scelta dell'utente, giusto? È qui che $_POST diventa utile:

add_shortcode('my-shortcode','my_shortcode_function');
function my_shortcode_function($atts){
    // Ottieni l'ID dallo shortcode
    $id = $atts['post_id'];
    // Verifica se i dati del modulo sono stati inviati
    if (isset($_POST['make']) && $id){
        $car_manufacturer = $_POST['make'];
        // Ora hai i dati del modulo. Fai quello che vuoi con essi
        return $my_shortcode_values;
    }
}

Dovrai estendere questo codice per adattarlo alle tue esigenze, come definire cosa fare se non ci sono dati dal modulo.

12 giu 2017 14:41:12
Commenti

Vedo che questa risposta risolve la mia domanda, ma non devo passare un parametro allo shortcode, la funzione deve semplicemente ottenere i dati POST e fare qualcosa con essi.

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

Vale la pena notare che se si utilizza $_GET invece. Il valore rimarrà anche se l'utente aggiorna la pagina (F5).

if (isset($_GET['make']) && $id){
        $car_manufacturer = $_GET['make'];
        // Ora hai i dati del form. Fai quello che vuoi con essi
        return $my_shortcode_values;
    }
13 giu 2023 10:25:08