Here With Me

Le blog technique d'Amaury Balmer qui parle de technologies open-source, mais surtout de WordPress !

21 janvier 2010
par Amaury
1 Commentaire

Correction rapide pour le bug de l’édition des mots clefs/catégories/termes dans WordPress Mu !

Un bug assez connu de la communauté WordPress Mu subsiste lors de l'édition de mots clefs. Le bug se produit uniquement dans certaines situations et est amplifié lors que l'installation WordPress Mu vient d'une migration de WordPress.

En fait, le bug se caractérise par la perte des catégories/mots clefs ou bien une "confusion" dans la taxonomie de WordPress. Vous éditez un mot clef avec l'ID 199 et ce dernier disparait au profit de la catégorie avec l'ID 8.

Étrange n'est ce pas !

Pourtant en base de données rien n'est perdu, c'est juste que la fonctionnalité globale catégories de WordPress Mu fout le bordel dans la table term_taxonomy.

Pour éviter d'avoir ce problème à l'édition, je vous donne un correctif très rapide : créer un fichier fix-bug-cat.php dans le dossier mu-plugins de votre installation WordPress Mu.

Et insérez-y le code suivant :

<?php
remove_filter ( 'term_id_filter', 'global_terms' );
?>

En désactivant le filtre fautif, vous vous évitez ce bug ennuyant... Pour ceux que ça intéresse, j'ai créé un ticket sur le trac à ce sujet pour probablement une correction définitive d'ici WordPress 3.0 !

21 janvier 2010
par Amaury
8 Commentaires

Utilisation originale de WordPress comme CMS : une documentation !

WordPress peut tout faire… (enfin presque !)

À force de le dire, on me reproche de vendre mon produit, mais avouer quand même que WordPress peut être utilisé dans un nombre incalculable de situations… En fait, je ne vois qu’une situation courante où WordPress ne convient pas… l’e-commerce… Et ça n’est pas les extensions existantes qui me feront mentir… rien ne vaut à mon goût un couplage avec un outil dédié… comme Magento par exemple !

Mais revenons au sujet principal de cet article, jQuery, dont une partie des sites est développée en drupal, vient de mettre à jour sa documentation pour la sortie future de la version 1.4 !

Et pour faire la mise à jour de la documentation, l’équipe de jQuery a migré de l’outil MediaWiki vers WordPress en utilisant l’aspect CMS…

Ainsi, elle profite :

  • D’un référencement naturel de premier ordre
  • La possibilité d’avoir des contributions pour chaque page via les commentaires et akismet pour contrer le spam
  • Une rapidité d’affichage grâce à l’usage de WP-SuperCache
  • Une classification libre via les catégories et les mots clefs.

Comme d’habitude avec l’équipe jQuery, le résultat est très soigné, en particulier le moteur de recherche avec l’effet AJAX qui actualise en temps réel les résultats de la recherche !

Peut-être les prémices d’une migration entière des sites jQuery vers WordPress… L’avenir nous le dira !

Source : Dougal Campbell’s geek ramblings & jQuery14.com

21 janvier 2010
par Amaury
1 Commentaire

Dernière version de WordPress Mu en français ! 2.9.1.1 !

Et voilà !

Dernière traduction française de WordPress Mu, car sauf mise à jour de sécurité rapide, il n’y aura plus de nouvelles versions de Mu ! WordPress et WordPress vont en effet fusionner dans la prochaine version 3.0 de WordPress.

C’est pour moi un soulagement que les 2 versions fusionnent… WordPress Mu, bien que très pratique, générait quand même pas mal de travail à chaque mise à jour… Un installateur codé « en dur », pas de mécanisme pour générer les archives automatiquement, une traduction plus conséquente que WordPress…

Bref !

Je suis donc très content de vous annoncer la disponibilité immédiate de la version française de WordPress Mu 2.9.1.1. Cette dernière est complètement synchronisée sur la version 2.9 de WP.

Vous pouvez télécharger la traduction et/ou le pack complet depuis la page de téléchargement de WordPress Francophone.

La version 2.9.1 de WPmu apporte :

  • Synchronisation avec WordPress 2.9.1

La version 2.9.1.1 de WPmu apporte :

  • Correction de 2 bugs apparus dans WPmu 2.9.1 (enregistrement des options et l’API XML-RPC)
  • Amélioration de la sécurité dans l’installateur.

Enfin, n’hésitez pas à effacer le fichier index-install.php de l’installation WordPress Mu, une fois la plateforme installée !

30 décembre 2009
par Amaury
8 Commentaires

Une barre de sidebar automatique par page et une sidebar par défaut !

Les widgets, bien qu'améliorer depuis WordPress 2.8 (avec la nouvelle classe PHP et la multiplicité de ces derniers), sont toujours une source de frustration pour les utilisateurs.
Par exemple, n'ajouter un widget que sur une certaine page reste encore mission impossible ou presque !

Ici, je vais vous montrer avec 2 bouts de code, comment on peut générer automatiquement une barre de sidebar pour chaque page de votre blog/site sous WordPress, sans oublier une sidebar par défaut pour le reste du blog et les pages n'ayant aucun widget spécifique !

Étape 1 : Enregistrement automatique des nouvelles sidebars

Ici, on procède en 2 étapes,dans un premier temps on enregistre la sidebar par défaut, puis on récupère la liste complète des pages disponibles de votre blog via la fonction get_pages() et on fait une boucle dessus pour enregistrer chaque sidebar.

<?php
if ( function_exists('register_sidebar') ) {
 // Default sidebar
 register_sidebar(array(
 'id' => "sidebar-default",
 'name' => 'Sidebar par défaut',
 'before_widget' => '<li id="%1$s">',
 'after_widget' => '</div></li>',
 'before_title' => '<h2>',
 'after_title' => '</h2><div>',
 ));

 // One sidebar by page
 $_pages = get_pages();
 foreach( (array) $_pages as $_page ) {
 register_sidebar(array(
 'id' => "sidebar-$_page->ID",
 'name' => esc_html($_page->post_title),
 'before_widget' => '<li id="%1$s">',
 'after_widget' => '</div></li>',
 'before_title' => '<h2>',
 'after_title' => '</h2><div>',
 ));
 }
 unset($_pages, $_page);
 wp_reset_query();
}
?>

Étape 2 : Appel de la sidebar depuis votre thème

(Code généralement à placer dans le fichier sidebar.php de votre thème)

Ici il ne faut pas oublier d'ajouter la variable globale $wp_query, grâce à cette dernière nous récupérons l'ID de l'objet actuellement chargé, et je vérifie que je suis bien sur une page et que la sidebar est utilisée. (autrement dit qu'elle contient au moins un widget). Si ça n'est pas le cas, je charge la sidebar par défaut.

<?php
global $wp_query;
if ( function_exists('dynamic_sidebar') ) {
 if ( is_page() && is_active_sidebar( 'sidebar-' . $wp_query->queried_object_id ) ) {
 dynamic_sidebar( 'sidebar-' . $wp_query->queried_object_id );
 }  else {
 dynamic_sidebar( 'sidebar-default' );
 }
}
?>

Vous pouvez retrouver l'intégralité du code depuis cette page pastebin

29 octobre 2009
par Amaury
14 Commentaires

Compatibilité entre MailPress et les autres… Cforms, Viper Video Quicktags…

MailPressComme beaucoup des utilisateurs de MailPress, je suis frustré de voir l'éditeur visuel cassé lors de la rédaction d'un email. En fait, il se trouve que MailPress fonctionne très bien lorsqu'il est installé sans aucun autre plugin interagissant avec l'éditeur visuel.

J'ai donc cherché une solution sur le net, et sur le groupe de support de MailPress, je suis tombé sur un sujet traitant du problème, et la réponse d'André m'a fait sourire :)

ask viper and cform dev to stop spreading their code all over all admin pages ! ?

En fait, il a en partie raison... Les plugins en questions, Viper Video Quicktags, Cforms et bien d'autres, ajoutent sans trop se soucier leur bouton à l'éditeur visuel de WordPress, et ils ne font pas du tout attention sur quelle page est chargé l'éditeur et encore moins par quel plugin... Mais ils n'ont pas tort... Lorsque j'ajoute le plugin Viper Video Quicktags, je souhaite ajouter les boutons des services vidéos... Et si je déporte l'éditeur visuel sur une page du site, je souhaite également avoir ses boutons...

En fait, le fautif à mes yeux est WordPress, les filtres offrent des superbes possibilités d'extensibilité, mais le nombre d'incompatibilités entre les extensions est en croissance exponentielle... Ici, l'éditeur visuel devrait pouvoir être appelé avec ou sans les filtres. (WordPress le propose déjà pour la fonction get_posts/query_posts)

Mais trêve de bavardage, pour corriger l'incompatibilité, j'ai développé un petit plugin qui corrige la situation pour les 2 plugins (cforms, viper vidéo quicktags), et de la sorte pas besoin de modifier/désactiver l'un ou l'autre des plugins...

<?php
/*
Plugin Name: MailPress Fix TinyMCE
Plugin URI: http://www.herewithme.fr
Description: Fix TinyMCE for MailPress with Viper Video Quicktags and Cforms
Author: Amaury Balmer
Version: 0.1
Author URI: http://www.herewithme.fr
*/

add_action( 'init', 'fixTinyMCE_MailPress', 999 );
function fixTinyMCE_MailPress() {
 if ( !isset($_GET['page']) && $_GET['page'] != 'mailpress_write' ) {
 return false;
 }

 // Viper video quicktags
 global $VipersVideoQuicktags; 

 remove_filter( 'tiny_mce_version', array(&$VipersVideoQuicktags, 'tiny_mce_version') );
 remove_filter( 'mce_external_plugins', array(&$VipersVideoQuicktags, 'mce_external_plugins') );
 remove_action( 'edit_form_advanced', array(&$VipersVideoQuicktags, 'AddQuicktagsAndFunctions') );
 remove_action( 'edit_page_form', array(&$VipersVideoQuicktags, 'AddQuicktagsAndFunctions') );
 if ( 1 == $VipersVideoQuicktags->settings['tinymceline'] )
 remove_filter( 'mce_buttons', array(&$VipersVideoQuicktags, 'mce_buttons') );
 else
 remove_filter( 'mce_buttons_' . $VipersVideoQuicktags->settings['tinymceline'], array(&$VipersVideoQuicktags, 'mce_buttons') );

 // Cforms
 remove_filter( 'mce_external_plugins', 'cforms_plugin');
 remove_filter( 'mce_buttons', 'cforms_button');

 return true;
}
?>

Le fichier est également disponible au téléchargement ici.

6 septembre 2009
par Amaury
5 Commentaires

Nouvelle extension de recherche… Search API ! Le prochain moteur de recherche de WordPress ?

subscribed-link-in-a-custom-search-engineChaque été, Google organise les « Google Summer of Code » ! Google sélectionne des centaines de projets open source, et permet aux responsables de cesdits projets de recruter le temps d’un été des étudiants en informatique !

Ces stages rémunérés par Google, permettent à des projets comme WordPress de travailler sur des sujets bien précis, comme les performances, la documentation ou encore la recherche dans WordPress !

Ce projet est pour l’heure disponible sous forme de plugin « Search API » bien qu’il soit, à mon avis, très rapidement intégré dans le cœur de WordPress…

Le plugin est totalement modulable, il peut fonctionner avec différents algorithmes, par défaut il y a la recherche MySQL (via FullText), mais il est possible d’utiliser d’autres modules comme Google Custom Search, Sphynx Search.

Le plugin permet un tri des résultats par pertinence, date ou alphabétique. Il y a également possibilité d’afficher un formulaire de recherche avancé, avec un tri possible sur les auteurs, les catégories, les mots clefs, etc.

6 septembre 2009
par Amaury
3 Commentaires

Time Machine et les partages SMB (Windows)

51220time20machine1Cherchant à faire des sauvegardes régulières de mon outil de travail, j’ai décidé de brancher mon petit serveur Windows à mon MacBook Pro…

Pour cela, Apple livre avec Mac OS un utilitaire nommé Time machine, mais ce dernier est quelque peu récalcitrant à fonctionner avec des partages réseaux, surtout si ces derniers ne proviennent pas d’un matériel badgé de la marque à la pomme…

Ayant rencontré quelques problèmes et messages d’erreur (Error 45, par exemple), je vous conseille fortement la lecture de l’article « Making Time Machine work with the ReadyNAS« , écrit par un des membres de ReadyNas.

Ce dernier réunit toutes les bonnes infos pour réussir la manipulation !

Je rajouterai une précision, pour modifier le nom de sa machine, cela se passe depuis les préférences systèmes, module partage ! (et évitez les espaces, majuscules… faites au plus simple!)

6 septembre 2009
par Amaury
11 Commentaires

Et un nouveau plugin de cache ! W3 Total Cache

Les concours de développement de plugins WordPress génèrent rarement des plugins utiles… Mais pour une fois, un plugin sort du lot : W3 Total Cache !

Le thème du plugin en question n’a rien d’innovant, le cache, et les concurrents sont multiples dont :

  • WP Super Cache : cache HTML en fichiers
  • BatCache : cache HTML via Memcached
  • HyperCache : cache HTML en fichiers

Sans oublier le mécanisme de cache objet interne à WordPress qui peut se coupler aux différents optimiseurs PHP et logiciels de cache du marché… ( Xcache, APC, Memcached, eAccelerator )

W3 Total Cache se veut résolument comme une solution transversale, il travaille sur les aspects suivants :

  • Le cache HTML
  • Le cache DB, donc orienté objet
  • La compression des fichiers CSS et JS via la compression : Minify.
  • L’utilisation de serveurs CDN (via FTP)

Pour le moment, le plugin est compatible avec les logiciels Memcached et APC, mais d’autres interfaces devraient voir le jour (on parle de Xcache assez rapidement).

Autrement dit, tout cela est très prometteur… Malheureusement, ce plugin n’est pas destiné au commun des mortels… En effet, avec des prérequis comme APC ou Xcache, très peu d’hébergeurs mutualisés sont compatibles… ( par exemple OVH et 1and1 ne le sont pas )

Ce plugin est donc destiné aux personnes ayant un serveur dédié ou virtualisé…

Autre inconvénient, et de taille, malgré que le plugin se dise compatible WordPress Mu, il ne l’est pas pour le moment. Mais cela devrait vite être résolu !

Bon caching !