Supporto » Sviluppare con WordPress » Problema con gli shortcode

  • Seguendo una guida su youtube sto provando a realizzare una funzione che visualizza un video di youtube quando viene richiamato uno shortcode.
    Il problema abbastanza curioso che si presenta riguarda la gestione dei contenuti dello shortcode.

    
        function __construct(){
    
            add_shortcode( 'youtube', array($this,'embedYT'));
    
        }
    
    public function embedYT($attr, $content){
    
            $array = array('id' => '', 'width' => '', 'height' => '');
    
            extract (shortcode_atts( $array, $attr ));
    
            $url_video = 'http://www.youtube.com/embed/'.$id;
            //echo '<iframe width="'.$width.'" height="'.$height.'" src="'.$url_video.'" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>';
            echo "<iframe width='".$width."' height='".$height."' src='".$url_video."' frameborder='0' allow='autoplay; encrypted-media' allowfullscreen></iframe>";
    
            echo '<h1>'.$content.'</h1>';
    
        }
    

    Caso 1:
    Nuovo post con due shortcode video NON CHIUSI e SENZA CONTENUTO

    [youtube id=”idacaso”]
    [youtube id=”idacaso”]

    Tutto ok.

    Caso 2:
    Secondo video si prende un commento

    [youtube id=”idacaso”]
    [youtube id=”idacaso”]Contenuto[/youtube]

    Risultato: viene mostrato il primo video mentre del secondo leggo solo mezzo shortcode

    es.
    (video)
    [youtube id=”idacaso”]Contenuto

    Caso 3:
    Visto che non mi interessa mettere un contenuto al primo shortcode penso di aggirarlo aggiungendo del testo in mezzo ai due shortcode

    [youtube id="KWl_4ANshQw"]
    
    test
    
    [youtube id='KWl_4ANshQw']Street Fighters II Anime bla bla[/youtube]

    Risultato: Mi mostra il primo video, la scritta test e poi [youtube id=’KWl_4ANshQw’]Street Fighters II Anime bla bla

    Caso 4:

    Decido di chiudere il primo shortcode anche se dentro non c’è niente

    [youtube id="KWl_4ANshQw"][/youtube]
    
    test
    
    [youtube id='KWl_4ANshQw']Street Fighters II Anime bla bla[/youtube]

    Risultato: Disastro, vengono visualizzati prima i due video (il secondo con il commento) e solo dopo la scritta test.

    Come ne esco ? Thx

Stai vedendo 2 repliche - dal 1 al 2 (di 2 totali)
  • Ah dimenticavo, il 4° caso si presenta anche se i due shortcode presentano il loro contenuto

    Da quanto vedo sembra che il problema derivi dall’uso di echo (sia che ne utilizzi due, uno per il video e l’altro per il commento che uno solo con un bel div che contiene tutto), invece di return.
    Non mi spiego perchè echo dovrebbe scambiare di posto i contenuti del post

Stai vedendo 2 repliche - dal 1 al 2 (di 2 totali)
  • Il topic ‘Problema con gli shortcode’ è chiuso a nuove risposte.