web-dev-qa-db-fra.com

Comment puis-je ajouter des liens vers des titres de widgets?

J'utilise trois widgets, deux d'entre eux sont par défaut WP (articles récents et archives) et le troisième est un widget personnalisé qui agit comme des articles récents, mais pour un type d'article spécifique.

Ma question est la suivante: comment puis-je créer des liens cliquables pour les titres de widgets? Il semble que WordPress n'accepte pas le code HTML dans le champ de titre et le supprime automatiquement. Idéalement, je ne veux pas faire cela avec un plugin, même si je sais que Linkable Title HTML et PHP Widget existent . Ce n'est pas vraiment ce que je recherche.

Le code pour le widget personnalisé que j'ai jusqu'à présent peut être vu ici: http://pastie.org/1847651

5
Ian

Rendre le titre cliquable

WordPress ne vous laissera pas passer de code HTML dans le titre du widget, mais il possède les paramètres pratiques $before_title et $after_title que vous pouvez utiliser pour manipuler les choses.

Dans votre widget, ajoutez simplement la première partie du lien (<a href="...">) au end de $before_title et la dernière partie du lien (</a>) au début de $after_title et votre titre. sera automatiquement lié.

Vous faites cela après avoir extrait les arguments dans la méthode widget() ... alors dans votre code, trouvez la section:

ob_start();
extract($args);

$title = apply_filters('widget_title', empty($instance['title']) ? __('Recent Staff News') : $instance['title'], $instance, $this->id_base);

Et ajouter:

$before_title .= '<a href="http://something.com">';
$after_title = '</a>' . $after_title;

Ensuite, vous serez lié!

Changer les widgets par défaut

Vous ne pouvez pas appliquer directement cette méthode aux widgets par défaut, mais il existe une solution de contournement utilisant l'héritage d'objet. Définissez simplement vos propres widgets personnalisés qui extend les widgets par défaut:

class My_Widget_Recent_Posts extends WP_Widget_Recent_Posts {

}

Vous devrez redéfinir le nom du widget et autres dans le constructeur, puis redéfinir la méthode widget() en copiant ce qui existe déjà, mais en appliquant notre code $before_title/$after_title ci-dessus. Votre nouvelle version du widget par défaut aura des titres pouvant être liés!

3
EAMann

Je viens de publier un plugin permettant à quiconque d'ajouter un lien dans les paramètres du widget. Cela fonctionne avec la plupart des plugins. Obtenez-le ici: http://wordpress.org/extend/plugins/widget-title-links/

1
ragulka

Si les widgets par défaut n'offrent pas la fonctionnalité que vous recherchez, notamment en autorisant des liens personnalisés sur les titres, il est préférable de vous servir de votre propre écriture.

http://justintadlock.com/archives/2009/05/26/the-complete-guide-to-creating-widgets-in-wordpress-28

http://churchco.de/the-complete-guide-to-writing-a-wordpress-widget/

Cela prend généralement la forme d'écrire un plugin qui ajoute des widgets personnalisés à l'écran du widget. Effectuer un petit ajustement à un widget existant est aussi simple que de copier le code dans l'original et de l'inclure de manière modifiée dans un plugin.

Les widgets par défaut sont situés dans wp-includes/default-widgets.php

Edit Si vous n'êtes pas familier avec le code WordPress, vous devez décider si vous souhaitez vous familiariser davantage. Si tel est le cas, vous devez ajouter un champ au formulaire de widget permettant à l'utilisateur de saisir l'adresse du lien. Vous devez également modifier le code du widget pour insérer le lien lorsque le code du widget affiche le titre.

Si vous ne voulez pas devenir familier, alors je crois que vous n’avez pas de chance. Les widgets ne permettent pas de modifier leurs capacités sans modifier le code WordPress.

1
kevtrout

En fait, vous POUVEZ mettre du HTML directement dans l'en-tête. Avec un peu de codage. Découvrez cet article qui vous montre comment:

http://ponderwell.net/2011/05/how-to-use-html-in-wordpresss-widgets-title/

0
Alfred