Les shortcodes sont des outils très puissants et souvent utilisés dans WordPress, du moins ils l’étaient parce qu’ils sont moins populaires depuis l’arrivée de Gutenberg avec WordPress 5.0.

J’utilise encore des shortcodes dans de rares cas (dans l’un de mes plugins, par exemple) et lorsque je dois écrire un article sur son utilisation, je souhaite pouvoir montrer un exemple sans pour autant l’exécuter.

La fonction ci-après permet de convertir les accolades des shortcodes en caractères HTML pour empêcher leur exécution lorsqu’ils sont dans des balises <code> ou <pre> (celles utilisées pour afficher les extraits de code). Cela signifie que [shortcode] sera converti en &#91;shortcode&#93; lorsque le contenu HTML de votre article sera généré, mais le navigateur l’affichera toujours sous la forme [shortcode].

function bweb_replace_shortcode($string) {
    $replace = array( '[' => '&#91;', ']' => '&#93;' );
    $newstring = str_replace( array_keys( $replace ), array_values( $replace ), $string[2] );
    return $string[1] . $newstring . $string[3];
}
function bweb_prevent_shortcode( $content ) {
	$pattern = '#(<pre.*?>|<code.*?>)(.*?)(<\/pre>|<\/code>)#imsu';
	return preg_replace_callback( $pattern, 'bweb_replace_shortcode', $content );
}
add_filter( 'the_content', 'bweb_prevent_shortcode', 9);

La fonction n’affecte que l’affichage de votre contenu, elle ne modifie pas votre contenu dans la base de données.

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

Votre adresse e-mail ne sera pas publiée.