Archive pour la catégorie ‘WordPress’

Personnaliser la barre latérale dans un thème WordPress

Dimanche 11 mai 2008

Vu qu’on m’a posé certaines questions là dessus cette semaine, ça va faire le sujet de l’article d’aujourd’hui.

Ajouter une seconde zone de widgets

WordPress - gestion des widgetsDepuis la version 2 (il me semble) de WordPress, si le thème est bien fait, on peut depuis le panneau d’administration ajouter des widgets dans certaines zones bien définies. Dans le thème par défaut, il y a une zone unique pouvant accueillir des widgets, qui se trouve dans la barre latérale. Mais on peut vouloir en ajouter d’autres.

Pour ajouter une nouvelle zone, il faut effectuer deux modifications dans le code du thème :

  1. premièrement, il faut “enregistrer” une nouvelle zone pour que celle-ci soit disponible dans le menu de sélection des zones. Pour cela il faut en général se rendre dans le fichier functions.php du thème et rechercher où est appelée la fonction register_sidebar (dans le thème par défaut, c’est tout en haut du fichier) et l’appeler une fois de plus pour enregistrer une nouvelle zone.

    Cette fonction peut optionnellement prendre en argument un tableau de paramètres permettant de personnaliser le code HTML qui enrobera la liste de widgets. Dans la plupart des cas on n’en a pas besoin mais au cas où c’est bon de savoir que c’est possible, notamment pour éventuellement spécifier une classe particulière à l’une ou l’autre zone en vu d’appliquer des styles différenciés.

    Une fois cela fait, la nouvelle zone est disponible dans le menu de sélection des zones du panneau d’administration (cf la capture d’écran ci-dessus).

  2. dans un deuxième temps, il faut inclure cette zone dans le rendu de la page à un endroit ou un autre (sinon, forcément, ça sert pas à grand chose). Pour cela il suffit d’intégrer le code suivant dans l’un des fichiers de template :
    <?php dynamic_sidebar(n); ?> en prenant garde de bien remplacer le paramètre “n” par un entier représentant le numéro de la zone que vous voulez afficher.

    Par exemple, si vous venez d’ajouter une zone et qu’il y en avait une seule avant, la nouvelle aura fort logiquement le numéro 2 et le code à insérer sera le suivant : <?php dynamic_sidebar(2); ?>.

N’afficher certaines choses que sur la page d’accueil

Afin de ne pas trop surcharger les pages on peut ne vouloir afficher certaines informations et liens que sur la page d’accueil. Par exemple sur ce site, les encarts “Mes autres sites”, “News du serveur” et “Divers” ne s’affichent que sur la page d’accueil (et les pages de contenu fixe).

Pour restreindre l’affichage d’une portion de code d’un fichier de template, c’est très simple :

<?php if ( [CONDITION] ) { ?>
[CODE HTML À RESTREINDRE]
<?php } ?>

WordPress propose quelques fonctions PHP qui testent dans quel type de page on se trouve et qui peuvent servir à composer la condition (qui remplacera la portion “[CONDITION]” du code ci-dessus). Ces fonctions sont définies dans le fichier wp-includes/query.php et comprennent notamment :

  • is_home() disant si l’on se trouve sur la page d’accueil.
  • is_page() disant si l’on se trouve sur une page de contenu fixe.
  • is_search() disant si l’on est dans la page de recherche.
  • is_404() disant si l’on se trouve sur la page d’erreur 404.
  • etc.

Pour composer la condition, il suffit d’appeler une ou plusieurs de ces fonctions séparées par une double barre verticale (||) qui représente un “ou” en PHP.

Par exemple pour ajouter une zone de widgets qui ne sera affichée que sur la page d’accueil et les page de contenu fixe, on utilisera le code suivant :

<?php if ( is_home() || is_page() ) { // Home and pages only. ?>
   <?php dynamic_sidebar(2); // Home and pages sidebar. ?>
<?php } ?>

Et ça marche que pour la barre latérale ?

Bien entendu ces deux “astuces” sont valable aussi bien pour la barre latérale que pour n’importe quelle autre partie de votre site. Mais c’est dans la barre latérale que c’est le plus souvent utilisé.

Correction pour le plugin WordPress Democracy

Samedi 26 avril 2008

Avec la version 2.5 de WordPress, le plugin Democracy (permettant de gérer des sondages) ajoute un “n” parasite au dessus de chaque sondage à l’enregistrement.

J’ai intégré la correction de ce bug à aux différentes corrections regroupées ici.

Affichage de balises sans qu’elles soient traduites

Samedi 19 avril 2008

Comme ça fait deux semaines que j’ai rien posté…

J’ai souvent constaté en recherchant des plugins pour WordPress ou en lisant des discussions sur des forums que pour afficher des balises “en clair” sans qu’elles soient traduites, les gens ajoutaient dedans une étoile ou un point. C’est une ruse qui fonctionne, certes, mais ça nuit à la lisibilité et en cas de copié/collé, il faut retoucher le code, c’est pas pratique.

Première solution

Une autre solution que j’ai longtemps utilisée consiste à intercaler une autre balise dedans qui empêchera le parser de reconnaitre la balise que l’on veut afficher.

Par exemple, pour afficher les balises bbcodes

[b]bla[/b]

sur un forum, on peut mettre

[b[b][/b]]bla[[b][/b]/b]

Cependant cela produit un code non-valide XHTML, puisqu’on se retrouve avec une balise HTML vide, ce n’est donc pas très élégant.

Seconde solution

Une autre façon de faire, est d’utiliser les entités HTML pour remplacer les crochets, chevrons ou accolades qu’on veut ne pas voir interprétées. Pour afficher

[b]bla[/b]

on écrira donc

&#91;b&#93;bla&#91;/b&#93;

Les différentes entités sont facilement trouvables sur le net, notamment ici.

Les plus intéressantes étant :

&#91; -> [
&#93; -> ]
&#60; ou &lt; -> <
&#62; ou &gt; -> >

L’inconvénient c’est que suivant les scripts, les entités sont automatiquement remplacées par les caractères qu’elles représentent et dans ce cas, ben… ça sert à rien \o/

En tout cas sur WordPress, ça marche et ça me semble plus élégant que les deux autres solutions.

Version française et corrections diverses pour le plugin Wordpress Embedded video

Lundi 24 mars 2008

Le plugin Embeded video permet d’intégrer des vidéos à Wordpress tout en respectant les standards XHTML (contrairement à beaucoup d’autres). S’il est globalement satisfaisant, j’y ai tout de même apporté quelques corrections :

  • la localisation de l’attribut title sur l’icône dans l’éditeur qui, de base, ne tient pas compte de fichiers de localisation autres que allemand et anglais).
  • la gestion des cas où l’on ne peut pas afficher de lien dans la popup de l’éditeur (Dailymotion et Garage Tv) qui, de base, désactive le champ lien lorsque l’on sélectionne un portail pour lequel ce n’est pas géré mais ne le réactive pas quand on en sélectionne un autre.
  • ajout de la gestion des liens pour Dailymotion.
  • la gestion des accents dans les titres de vidéos (je vois pas trop ça marche pas de base… à tous les coups c’est encore php qui se vautre avec l’UTF-8…).

Et voici la version française (traduite par mes soins) ainsi que le fichier .pot pouvant servir à d’autres traductions du plugin : Embedded video - Version française.

Version française pour le plugin Wordpress Democracy

Vendredi 21 mars 2008

Le plugin Democracy permet d’intégrer des sondages à Wordpress. Il est prévu pour être localisable mais j’ai cependant dû y apporter quelques corrections pour que ce soit pleinement le cas.

Et voici la version française (traduite par Mya) ainsi que le fichier .pot pouvant servir à d’autres traductions du plugin : Democracy - Version française.