Cyberspace. A consensual hallucination experienced daily
by billions of legitimate operators.

William Gibson, Neuromancer.

A life spent making mistakes is not only more honorable, but more useful than a life spent doing nothing.

George Bernard Shaw.

François/phnk

WordPress 2.5, point technique

24 mars 2008 · Technologie

Résumées ci-dessous, quelques modifications pascales sur ce blog. Cela ne risque pas d’intéresser grand monde, mais je documente systématiquement mes modifications.

  1. Le passage sous WordPress 2.5 (RC1) s’est très bien passé.

    Le seul accroc du Release Candidate [review] est l’encodage UTF-8, qui ne fonctionne pas du premier coup ; heureusement, il suffit de supprimer/commenter la ligne DB_CHARSET du fichier wp-config.php [forum, solution].

    WordPress 2.5 possède son propre système de tagging, il va donc falloir revenir sur ce point. J’utilisais TechnoTag et je ne vois aucun moyen de conversion si ce n’est la conversion manuelle… mais apparemment les deux systèmes cohabitent donc le statu quo est envisageable.

  2. Les permaliens des petites choses sont plus courts.

    À partir du volume 76, les liens /petites-choses/petites-choses-76/ sont remplacés par des liens /petites-choses/76. Voici le détail de la manip pour convertir les volumes précédents, en notant α le suffixe wp modifiable des installations WordPress :

    1. Conversion des adresses dans la base SQL (table α_posts, champ post_name) :

      update α_posts set post_name = replace(post_name,'petites-choses-','');

      Résultat attendu : suppression de la seconde référence petites-choses dans les permaliens ; 76 lignes affectées ;

    2. Conversion des liens inter-volumes (table α_posts, champ post_content) :

      update α_posts set post_content = replace(post_content,'petites-choses/petites-choses-','petites-choses/');

      Résultat : 22 cross-refs de modifiés) ;

    3. Une ligne de redirection sous Apache avec mod_rewrite, pour ne pas briser les liens externes existants et assurer la transition dans les moteurs de recherche :

      RewriteRule ^blog/petites-choses/petites-choses-(.*)/ /blog/petites-choses/$1 [R=301,L]

      (À la place de (.*) il faudrait employer le regex pour un ou plusieurs chiffres de 0 à 9, mais ça tient du détail insignifiant)

  3. J’ai basculé sur le moteur de recherche interne de WordPress.

    Le formulaire de recherche précédent, basé sur Google, ne renvoie pas suffisamment de résultats, et en renvoie d’autres inutilisables. Faîtes le test avec la requête "tripoli six" site:phnk.com : Yahoo! renvoie 11 résultats et le premier correspond au résultat objectivement le plus pertinent ; Google renvoie 3 résultats de mauvaise qualité. La bonne réponse est : 5 résultats pertinents (Yahoo! et Google indexent des pages d’archivage intermédiaires).

  4. Dû à un réglage un peu idiot mais plein de bonnes intentions, il était possible d’accéder aux archives en tapant directement /blog/petites-choses/ en remplacement de /blog/categorie/petites-choses/. En revanche, dans ce cas, les liens de navigation sur la page Archives (page/2/ et consorts) ne fonctionnaient pas.

    C’est réglé grâce à mod_rewrite, qui rajoute désormais le marqueur categorie lorsque c’est nécessaire :

    1. Une première ligne pour ne pas modifier les adresses contenant déjà categorie :

      RewriteCond %{REQUEST_URI} !categorie

    2. Une deuxième ligne pour insérer categorie dans les adresses :

      RewriteRule ^blog/(.*)/page/(.*)/ /blog/categorie/$1/page/$2/ [R=301,L]

      (Même remarque que pour le point 3 de la modification 2 : il y a un regex correct pour le second code>(.*) mais qui n’est pas obligatoire.)

  5. Le chiffrage des commentaires a changé.

    Jusqu’à présent les numéros s’affichant en grisé en haut à droite de chaque commentaire à titre de permalien indiquaient l’identifiant unique (comment_ID()) du commentaire en question. Le spam a fait que ces numéros ont rapidement dépassé les 23 000 ; cela se rectifie en superposant un système de numérotation unique, où le commentaire est repéré par son ordre d’arrivée sur la page :

    1. Sur la page de gabarit comments.php, avant d’entrer dans la boucle foreach ($comments as $comment) des commentaires, on déclare une variable nulle qui servira de compteur :

      <?php $hits = 0; ?>

    2. À l’intérieur de la boucle, on insère un compteur :

      <?php $hits ++; ?>

    3. Plus loin, dans la déclaration du blockquote contenant le commentaire, on insère l’identifiant unique comment_ID() :

      [...] <?php echo $oddcomment; ?> comment” id=”comment-<?php comment_ID() ?>”>

    4. Enfin, on appelle le numéro pour l’afficher avec mention du permalien ; le nouveau numéro $hits apparaît ici :

      <div class="number"><a href="#comment-<?php echo $hits; ?>" id="comment-<?php echo $hits; ?>" title="Lien permanent vers ce commentaire">#<?php echo $hits; ?></a></div>

    Ce changement n’a pas brisé les liens établis précédemment : l’udentifiant unique est toujours présente, la nouvelle numérotation utilise un élément différent (div class="number" > a), ce qui me permet d’avoir deux numéros sur chaque commentaire : son identifiant unique, et son numéro sur la page à laquelle il correspond ; par exemple : id="comment-23501" et id="comment-2" pour ce commentaire, disponible par son numéro et par son identifiant unique.

Référence : François, WordPress 2.5, point technique, Boîte Noire, 24 mars 2008.
Accessible en ligne : http://phnk.com/blog/tech/wordpress-25/.

Discussion

4 commentaires :

Je suis atterrée.

Amanda, 24 mars 2008

Me dire ça à moi qui corrige toutes les fautes d’orthographe dans tes perfides commentaires !

François, 24 mars 2008

Je suis admiratif…

c0wb0yz, 25 mars 2008

Merci pour ces précieux conseils.

Anne-Ma, 22 avril 2008

Laisser un commentaire :