Attention : Depuis WordPress 4.9, les shortcodes sont automatiquement interprétés dans le widget texte.

Si vous consultez cette page, c’est que vous avez dû vous rendre compte que WordPress n’interprète pas les shortcodes insérés dans les widgets textes. On peut juste ajouter du code HTML et CSS.

C’est bien dommage car on pourrait afficher plein de choses sympas en procédant ainsi.

Par exemple, si vous essayez d’afficher un calendrier de l’extension Calendar avec son shortcode, vous obtiendrez ça :

 

shortcode widget wpmarmite

Rendu d’un shortcode dans le widget texte de WordPress

Pas très concluant, donc.

Heureusement, vous pouvez changer ce comportement en ajoutant le snippet suivant dans le fichier functions.php de votre thème enfant:

add_filter('widget_text','do_shortcode');

Et c’est tout !

Maintenant, WordPress va interpréter tous les shortcodes entrés dans le widget texte.

Ce qui nous donne avec l’exemple précédent :

shortcode widget wpmarmite

Le résultat final avec l’utilisation du snippet

Vous pouvez maintenant ajouter n’importe quelle fonctionnalité à votre barre latérale.

Exécuter du code PHP dans le widget texte

Si vous souhaitez aller un peu plus loin, il est également possible d’autoriser l’utilisation du PHP dans ce widget avec le snippet suivant :

add_filter('widget_text', 'wpm_php_text', 99);

function wpm_php_text($text) {
 if (strpos($text, '<' . '?') !== false) {
 ob_start();
 eval('?' . '>' . $text);
 $text = ob_get_contents();
 ob_end_clean();
 }
 return $text;
}

Vous pouvez maintenant ajouter n’importe quelle fonction ou bout de code PHP dans votre widget texte.

Attention tout de même à ne pas faire n’importe quoi. Il vaut mieux passer par un éditeur de code pour toucher au code PHP. Et pourquoi pas créer votre propre shortcode 🙂

Source: WPThemedetector