Je ne suis pas la première personne à lutter contre le fait que WordPress supprime le code HTML des titres de widgets. Il existe un certain nombre de widgets personnalisés qui vous permettent d’ajouter, par exemple. des liens vers des titres, mais je voulais en particulier pouvoir ajouter des balises br et span.
J'ai trouvé ce tutoriel: http://ponderwell.net/2011/05/how-to-use-html-in-wordpresss-widgets-title/ qui vous explique comment créer un fichier de widget personnalisé basé sur le fichier natif WP default-widgets.php.
Cela me mène presque là-dedans, mais en utilisant sa méthode directement ou en l'adaptant pour personnaliser un widget existant (Enhanced Text Widget), j'obtiens une sortie de <br> et <span> au lieu d'un encodage HTML correct. J'ai vu que quelqu'un dans les commentaires mentionnait html_entity_decode () et avait essayé plusieurs choses, mais honnêtement, je ne connais pas assez PHP pour que cela fonctionne.
Si je dois le faire dans functions.php plus un fichier custom_widgets.php, je le ferai, mais pour des raisons de portabilité, je préférerais accomplir cette tâche en tant que plugin de widget.
De quoi ai-je besoin, en particulier, pour que ces balises soient correctement codées maintenant que je suis si loin? J'ai trouvé la solution proposée par Chris ici: Le html non filtré dans le titre du widget ne fonctionne pas , mais il est clair que je ne mets pas ce code au bon endroit. (J'ai moi-même obtenu l'auto-solution d'Amy pour qu'elle fonctionne dans functions.php, mais je ne suis pas sûr que ce soit une excellente façon de le faire ....)
TIA.
Comme vous le savez, les balises HTML ne fonctionnent pas sur le titre du widget. Mais il y a du travail à faire pour l'utiliser. La meilleure approche que je connaisse consiste à utiliser un shortcode dans le titre. Donc, pour utiliser br et span, voici une solution:
add_filter('widget_title', 'do_shortcode');
add_shortcode('br', 'wpse_shortcode_br');
function wpse_shortcode_br( $attr ){ return '<br />'; }
add_shortcode('span', 'wpse_shortcode_span');
function wpse_shortcode_span( $attr, $content ){ return '<span>'. $content . '</span>'; }
add_shortcode('anchor', 'wpse_shortcode_anchor');
function wpse_shortcode_anchor( $attr, $content ){
return '<a href="'. ( isset($attr['url']) ? $attr['url'] : '' ) .'">'. $content . '</a>';
}
Vous pouvez simplement mettre ces lignes dans votre fichier functions.php
.
Comme pour l’utilisation du shortcode sur le contenu du post, utilisez-le sur le titre du widget.[br]
[span]something[/span]
[anchor url="http://domain.com/"]something[/anchor]
La plupart des widgets utilisent un filtre sur le titre du widget widget_title
, mais certains widgets personnalisés peuvent ne pas s'appliquer ou utiliser ce hook. Donc, sur ces widgets, cette méthode ne fonctionnera pas, et je suppose qu'une autre méthode ne fonctionnerait pas.