Supporto » Sviluppare con WordPress » Come creare uno shortcode

  • Salve a tutti,

    Sto cercando di aggiungere una funzione personalizzata al mio sito ma cercando nel web mi pare di capire che sia più facile creare uno shortcode per questo.

    Ho bisogno di mostrare una tabella con i prezzi, che cambiano a seconda della camera e della lingua nella quale si sta navigando sul sito.
    Ho creato una funzione (ne incollo solo un pezzo giusto perché si capisca) e vorrei richiamarla dentro alcuni post e pagine.

    Ho bisogno di passare alla funzione la variabile della camera (può essere “double”, “triple” ecc) e della lingua (“it”, “en”…).

    Però non capisco come passare allo shortcode che contiene la funzione questi parametri perché cercando sulle guide nel web sembra che la funzione shortcode_atts() attribuisca un valore all’array invece di assegnargli il valore delle variabili che passo attraverso la funzione.

    In conclusione, ho una funzione, ho capito come richiamare lo shortcode sulle pagine ma mi manca il trasformare questa funzione in uno shortcode.
    Qualcuno può darmi una mano per favore?
    Grazie mille!!!

    Questa è la mia funzione:

    function show_table_prices($room, $lang) {

    switch ($room){
    case “double”: $price_low = “80”;

    case “triple”: $price_low = “90”;
    }

    if ($lang = “it”) {$x = “ciao”;}

    echo $ price_low.$x;

    }

    E lo shortcode richiamato dovrebbe essere così immagino:

    [table_prices room=”double” lang=”en”]

Stai vedendo 1 repliche (di 1 totali)
  • Ciao @brighella,

    Se vuoi creare uno shortcode dai una lettura a https://codex.wordpress.org/add_shortcode

    Aggiungere lo shortcode usando add_shortcode nel file functions.php del tuo tema / o meglio un plugin a parte.

    La funzione prende come parametri il nome dello shortcode ( o slug ) ed una callback, ovvero una funziona che verrà eseguita quando andrai ad utilizzare lo shortcode in forma di stringa.

    La funzione di callback prende due parametri, gli attributi $attrs ed il contenuto dello shortcode $content.

    Quindi:

    
    add_shortcode('mio_shortcode', function(array $atts = array(), $content = '') {
        // ... Qui il tuo codice
    });
    

    varrà per lo shortcode in forma: [mio_shortcode attributo="valore"]content[/mio_shortcode] oppure [mio_shortcode attributo="valore"].

    Non sempre hai necessità di passare contenuto o attributi, per questo motivo i parametri hanno un valore di default.

    Quando la funzione di callback viene eseguita delle volte vengono passati diversi valori, alcuni possono essere vuoti per cui in $attrs non è detto che l’utente passi tutti i valori corretti dallo shortcode.

    Per questo motivo viene usata la funzione shortcode_atts che fa in modo di prendere i valori da una lista di default qualora quella passata in $atts non contenga quel valore.

    
    add_shortcode('mio_shortcode', function(array $atts = array(), $content = '') {
        $atts = shortcode_atts(array(
             'room' => 'double',
             'lang' => 'en'
        ), $atts, 'mio_shortcode');
    
        //... Qui il resto del tuo codice.
    });
    

    Spero ti sia stato di aiuto. Per maggiori info riguardo gli shortcodes leggi https://codex.wordpress.org/Shortcode_API che è tradotto anche in italiano.

    Facci sapere.

Stai vedendo 1 repliche (di 1 totali)
  • Devi essere collegato per rispondere a questo topic.