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

30 décembre 2009 § 7

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

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

29 octobre 2009 § 13

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.

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

6 septembre 2009 § 5

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.

Time Machine et les partages SMB (Windows)

6 septembre 2009 § 3

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!)

Et un nouveau plugin de cache ! W3 Total Cache

6 septembre 2009 § 10

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 !

Calibrer en 10 secondes son écran PowerBook G4 !

6 août 2009 § 6

Mon MacBook Pro étant parti en SAV, me voilà à travailler sur un ancien PowerBook G4. D’un point de vue performance, c’est globalement 100 fois plus long que mon MacBook Pro, mais dans mon malheur, j’ai la chance d’avoir une machine de substitution qui a le même clavier que mon MBP ! Et ça… ça n’a pas de prix !

Malheureusement, cette machine, plus lente, plus lourde mais aussi avec un écran ultra lumineux et un contraste de folie est assez difficile à exploiter correctement lorsqu’on manipule des fichiers PSD de façon régulière !

Un Powerbook peu aussi explosé !

Un Powerbook peu aussi explosé !

Je me suis donc dit, comment calibrer mon écran sans sonde, sans logiciel incompréhensible… Et bien tout simplement en cherchant sur le net ! J’ai trouvé sur un forum américain du monde Mac un gentil monsieur qui a mis à disposition son profil couleur de son G4 calibré avec une bonne sonde !

Et comme les claviers G4 sont globalement assez semblables entre 2 machines, ce profil ne peut être que mieux ! Et il s’avère qu’après un petit essai, ce profil est tout simplement génial !

Sur le profil par défaut, j’étais incapable de voir une couleur comme le gris ( #F3F3F3 ), alors qu’avec ce profil il est très largement visible et c’est vraiment agréable !

Je mets une copie de l’archive zip du profil couleur PowerBook G4 à disposition sur mon blog, si l’autre lien venait à disparaitre…

Simple Tags et WordPress 2.8

16 juin 2009 § 39

Actuellement Simple Tags n’est pas toute à fait compatible avec WordPress 2.8.

Une version optimisée et compatible est en préparation… patience ;)

For english users : a new version of Simple Tags for WordPress 2.8 is in preparation and will be release soon !

Optimiser les performances de PHP et WordPress chez OVH en 4 lignes !

24 avril 2009 § 64

Je ne pense pas que cet article soit l’info du siècle, mais on peut très facilement améliorer les performances de WordPress chez les hébergements mutualisés OVH.

Pour cela, il suffit juste de changer 4 paramètres de PHP et pour y parvenir nous allons créé/édité le fichier .htaccess à la racine de votre FTP. (dans le dossier WWW)

Et on va y insérer les lignes:

SetEnv REGISTER_GLOBALS 0
SetEnv ZEND_OPTIMIZER 1
SetEnv MAGIC_QUOTES 0
SetEnv PHP_VER 5

Autrement dit, on désactive les directives PHP magic quotes, register globals qui n’apportent rien à WordPress.
On passe à PHP5 (qui offre une meilleure comptabilité avec les extensions) et on active le module PHP Zend Optimiser, ainsi le code PHP sera optimisé et les traitements récurrents seront mis en cache.

Tout cela de façon transparente pour WordPress, mais avec une meilleure réactivité à la clef pour l’utilisateur.

Pour plus d’infos sur PHP chez OVH, 2 petits guides à lire:

  • http://guide.ovh.com/PhpChezOvh
  • http://guide.ovh.com/ConfigPhp