Formation PUB020 : WordPress, 2023 Divers

51.5 La temporisation de sortie : ob_start() et ob_get_clean()


Il est possible d'insérer un shortcode sur une page qui affiche déjà du texte. 

Ex :

texte entré dans une page WordPress 

Texte avant le « shortcode ». 

[christianemonshortcode]

Texte après le « shortcode ».

Dans ce cas, nous voudrons certainement que le texte généré par le shortcode apparaisse exactement à l'endroit où nous avons placé le shortcode et ce, peu importe la façon dont le tout est codé. Par exemple, si la fonction de rappel du shortcode faisait malencontreusement un echo, ce texte apparaîtrait avant le texte précédent le shortcode.

Pour nous assurer que tout apparaisse au bon endroit, il faudra utiliser la temporisation de sortie.

Qu'est-ce que ça veut dire ? Eh bien nous allons demander à WordPress de ne rien envoyer au navigateur tant que nous n'aurons pas terminé notre travail. 

La temporisation de sortie sera débutée par un appel à la fonction ob_start(). Notez qu'il s'agit d'une fonction PHP qui peut être utilisée dans n'importe quel programme PHP et non seulement dans les sites WordPress. La temporisation de sortie sera terminée par un appel à ob_get_clean().

Ex :

WordPress (PHP)

function christiane_mon_shortcode( ) {

    // début de la temporisation

    ob_start();

 

    $code_html = "<span class='textespecial'>Voici le texte qui sera affiché à la place du shortcode</span>";

 

    // on retrouve ici tout le code qui aurait pu être envoyé au navigateur pendant notre traitement

    $output = ob_get_clean();

 

    return $code_html . $output;

}

 

add_shortcode( 'christianemonshortcode', 'christiane_mon_shortcode' );

ou, si le shortcode est défini dans la classe d'une extension : 

WordPress (PHP)

class Christiane_Mon_Extension {

 

    public function __construct() {

        add_shortcode( 'christianemonshortcode', array( $this, 'mon_shortcode' ) );

        ...

    }

 

    function mon_shortcode( ) {

        // début de la temporisation

        ob_start();

 

        $code_html = "<span class='textespecial'>Voici le texte qui sera affiché à la place du shortcode</span>";

 

        // on retrouve ici tout le code qui aurait pu être envoyé au navigateur pendant notre traitement

        $output = ob_get_clean();

 

        return $code_html . $output;

    }

}

Notez bien : si, comme dans l'exemple précédent, la fonction de rappel ne fait aucun echo, l'utilisation de ob_start() et ob_get_clean() est optionnelle.

Pour plus d'information

« Creating Shortcodes Using WordPress Part 1 ». Jeffrey Dev. http://www.jeffreydev.com/creating-shortcodes-using-wordprss-part1/

« WordPress shortcode output buffer versus appending to string ». Philaeum - Strategic Internet Solutions. http://www.philaeum.nl/blog/index.php/wordpress-shortcode-output-buffer-versus-returning-string/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre