Elargir le bloc de réglages d’un widget dans l’administration WordPress

Si vous avez déjà créé des widgets personnalisés dans un thème ou plugin WordPress, vous devez savoir que le formulaire d’édition des réglages du widget occupe toute la colonne parente représentant la sidebar. Mais saviez-vous qu’un réglage lors de la définition du widget vous permet de modifier la largeur de ce formulaire ?

Un petit paramètre pour de grands résultats !

Si vous ne visualisez pas ce dont je parle, il vous suffit d’insérer le widget natif WordPress Texte dans une sidebar. Une fois les réglages de ce widget ouverts, vous remarquerez que le formulaire est bien plus large que les blocs de réglages des autres widgets… et le plus important : cette largeur est personnalisable !

En fait, je n’ai pas trouvé aucune référence à ce réglage dans le codex WordPress. Mais en fouillant dans le code du core WordPress, j’ai découvert dans le fichier wp-includes/widgets.php que l’array $control_args passée en 4ème paramètre lors de la construction de la sous-classe de notre widget peut définir la largeur du formulaire du widget. L’exemple concret ressemble à ça…

class My_New_Widget extends WP_Widget {
  function __construct() {
    $widget_args = array('classname' => 'my_new_widget', 'description' => 'Description de mon widget');

    $control_args = array(
      'width' => 450
    );

    parent::__construct(
      'my_widget_id',
      'Titre de mon widget',
      $widget_args,
      $control_args
    );
  }
  ...
}
register_widget('My_New_Widget');

Le code important est la valeur width dans l’array $control_args qui va donc magiquement augmenter la largeur du bloc de réglages de votre widget dans l’administration WordPress. Un paramètre bon à connaître si les options de votre widget sont nombreuses et occupent de la place : vous pouvez désormais modifier la largeur de ce groupe d’options.

Enfin, notez que la valeur par défaut de la largeur est de 250 pixels. Avec cette width par défaut, le formulaire occupera la largeur exacte de la sidebar parente.

Un petit détail qui peut s’avérer pratique !


Vous avez aimé cet article ?

Partagez-le sur vos réseaux sociaux en guise de remerciement :)


4 commentaires

Hélas si tu regardes le code source du widget natif « Texte », aucun filtre n’est utilisé pour modifier $control_ops ($control_args dans mon tuto) de l’extérieur.

Dans ce cas j’opterai pour « dé-enregistrer » le widget en question avec unregister_widget (http://codex.wordpress.org/Function_Reference/unregister_widget), dupliquer son code en insérant le paramètre width.

C’est sale, mais si aucun hook n’a été ajouté dans le code du widget, je ne vois pas d’autre solution…

Laisser un commentaire