Articles sur 'wordpress'

Warning: Missing argument 2 for wpdb::prepare()


Si vous êtes passés à WordPress 3.5, vous avez probablement plein d’erreurs liées à une modification dans le prototype de la méthode prepare de la classe wpdb. Cette méthode est utilisée pour sécuriser une requête avant son passage à la base de données. Beaucoup de plugins et de themes utilisent cette méthode de manière inadaptée actuellement. Jusqu’à présent cela ne posait pas de problème particulier mais en version 3.5, les développeurs de WordPress ont décidé de changer cela et un warning est généré lorsque la méthode est appelée sans le nombre de paramètres requis.


WordPress is the best!


Ma seule erreur lorsque j’ai décidé de me lancer dans le blogging, c’est de ne pas avoir opté pour WordPress d’emblée. Je voulais m’affranchir complètement de la partie technique. C’était une erreur car WordPress la simplifie tellement que c’est juste un plaisir. J’ai d’abord erré sur Overblog avec toutes les limitations d’un tel service puis sur Typepad avec un lot tout aussi conséquent de limites puis j’ai découvert WordPress un peu plus de deux ans après. Depuis, je me demande comment font les autres systèmes pour exister… WordPress est beau, simple, souple, rapide et stable. Il a tout ce que l’on peut attendre d’un système informatique avec les problèmes en moins.


Pensées sur WordPress


Vous le savez, depuis plus de trois ans maintenant, ce blog fonctionne sous WordPress. Pour ceux qui ne connaissent pas WordPress, c’est à la base un moteur de blogs. En réalité, son usage est très souvent détourné pour en faire n’importe quel type de site web. Plus de 12% des sites Internet fonctionneraient sous WordPress, en faisant ainsi le premier moteur de sites! Aujourd’hui, lorsque l’on veut créer un blog, que l’on s’y connaisse ou pas en informatique, WordPress est le choix qui s’impose. Facile à installer, facile à utiliser, facile à faire évoluer, WordPress, c’est le couteau suisse du site web couplé à un moteur de Ferrari pilotable sans permis!


WordPress 2.8.1 et la sécurité


WordPress 2.8.1 vient tout juste de sortir. Cette version fixe son lot de bugs et un problème de sécurité lié aux plugins. Il y a désormais une vérification qui est réalisée pour chaque plugin lors du chargement des pages de ce plugin dans l’admin. Si la page demandée a bien été enregistrée via la fonction add_menu_page (ou l’une de ses variantes), tout va bien.


WordPress 2.8


La très attendue version 2.8 de WordPress est enfin disponible! Elle devait au départ sortir en mars mais elle a été retardée par pas mal de bugs. Elle est enfin là, alleluia! Elle s’appelle Baker et s’installe automatiquement en un clic de souris. Au niveau de l’admin, il n’y a pas de grands changements et c’est très bien comme ça car l’interface d’admin a déjà atteint un niveau d’ergonomie proche de la perfection.


Migration des permaliens


J’ai entrepris hier la migration des permaliens du blog. Sous WordPress, c’est un jeu d’enfant ou presque puisqu’il suffit de modifier la structure dans le panneau de configuration. Je suis passé de la nomenclature /%category%/%postname%/ à /%postname%/ afin de réduire la longueur de l’url et donc de la rendre plus pertinente. Seul problème rencontré, il existe depuis quelques versions de WordPress ce que l’on appelle la page « attachment » qui est un post vide contenant juste l’attachement en question (photo, vidéo, etc…). Si vous avez dans vos posts, une image avec le même nom que le post, la redirection n’aura pas lieu correctement après la migration 🙁 Voici un exemple concret : j’ai un post « toto » dans la catégorie titi avec une photo intitulée « toto.jpg ».


Profiless


Suite à une demande sur le forum wordpress Fr, j’ai créé un petit plugin pour bloquer l’accès au profil utilisateur dans la partie admin pour les utilisateurs de niveau 0 (les subscribers). C’est pratique pour ceux qui gèrent des blogs avec des centaines d’utilisateurs et ne veulent pas que ceux-ci modifient leur profil eux mêmes. Je mets ce plugin donc à disposition de tous même si je pense qu’il aura une audience très limitée. Si vous l’utilisez, n’hésitez pas à me laisser un petit commentaire, cela fait toujours plaisir! Si vous rencontrez un problème avec ce plugin, laissez moi un commentaire ou envoyer un mail via le formulaire de contact. Voici le lien de téléchargement.


JSON


Le JSON, vous ne savez sûrement pas ce que c’est, enfin jusqu’à aujourd’hui. Cela veut dire : « Javascript Object Notation ». En clair, c’est un format de données structurées qui est notamment utilisé en Ajax pour échanger des données entre le client et le server. Le JSON permet d’adopter un format commun entre le client et le server ce qui fait qu’ils arrivent à se comprendre. Le problème, c’est que c’est assez peu documenté. Cependant, si vous voulez passer des tableaux du client au server ou du server au client dans le cadre d’une application web javascript avec un server php, vous allez avoir du mal à vous en passer.


Mise à jour WordPress 2.7.1


Et voilà, le blog vient de passer en version 2.7.1 grâce au formidable tool d’automatic upgrade. Comme je sais que certains ont eu quelques problèmes lors de la mise à jour, je vous recommande de bien mettre à jour en utilisant la version fr-FR et non la version de base si vous utilisez la version française. Si l’option pour installer la version fr-FR n’apparaît pas, soit il y a un problème de configuration sur votre blog et il ne la détecte donc pas, soit il faut attendre un peu le temps que l’API fasse un nouveau poll. Si vous voyez des bugs suite au passage en 2.


Utiliser le nonce dans son plugin WordPress


Vous le savez probablement, Internet est une jungle où les hackers s’amusent à trouver des failles de sécurité pour pirater les sites. Si vous écrivez un plugin wordpress, il faut essayer de le sécuriser un minimum afin d’éviter qu’il ouvre des portes d’entrée sur votre blog (voire votre base de données). Lorsque l’on soumet un formulaire (form submit en post ou get), il y a une interaction avec le server qui va parser et exploiter les données que vous lui envoyez. Le problème est que cela doit se faire suivant une séquence bien précise avec un certain nombre de contrôles. Si un utilisateur parvient à soumettre ses données directement en outrepassant ces contrôles, il y a un risque pour le système car il peut alors soumettre n’importe quoi ou profiter de privilèges dont il ne dispose pas. Le nonce field permet d’empêcher cela.


Supprimer un menu dans l’administration


Ce qui est vraiment formidable avec WordPress, c’est que l’on peut presque tout faire! Ainsi, si vous souhaitez bloquer l’accès à certains menus pour certains utilisateurs dans l’administration, c’est tout à fait possible, et ce sans modifier le code du core. On commence par supprimer le lien vers le menu dans la barre des menus en faisant un unset sur l’index correspondant dans la variable globale menu. Par exemple, pour bloquer l’accès à la modification du profil, je fais : unset($menu[50]); Pour savoir quel $menu[x] il faut unsetter, il faut regarder dans le fichier menu.php dans le répertoire wp-admin. Cette action aura pour effet de supprimer l’icône dans le menu d’admin.


La gestion des options


Lorsque vous écrivez un plugin wordpress, vous allez probablement avoir des options à gérer pour adapter le fonctionnement de votre plugin en fonction des désirs de l’utilisateur. Aucun problème, WordPress a tout prévu! En effet, il dispose d’une table dans la base données dédiée aux options du blog et des plugins. Vous pouvez donc tout à fait l’utiliser pour y insérer des options supplémentaires. Là où toute la puissance de WordPress se révèle, c’est qu’il vous fournit une surcouche pour faire tout le travail d’interfaçage avec la base de données grâce à trois fonctions get_option, add_option et update_option. La première permet de récupérer la valeur d’une option, la seconde permet d’ajouter une option et la troisième permet de mettre à jour la valeur d’une option.


Les hooks WordPress


Comme dans tout système, le plugin fonctionne grâce aux hooks qui lui permettent de s’accrocher au coeur du système et d’ajouter ou modifier des fonctionnalités. Il en existe des centaines dans WordPress, très exactement 800 dans la version 2.7. Ce site fournit une base de données des hooks avec leur fonctionnalité exacte. C’est donc une mine d’or pour le développeur de plugins wordpress. On distingue principalement deux types de hooks : les hooks d’action et les hooks de filtrage.


Utiliser des scripts dans son plugin WordPress


Si vous souhaitez utiliser du Javascript ou des librairies externes comme jQuery par exemple, il va falloir les renseigner correctement pour que votre plugin puisse y faire appel dans ses fonctions. Sinon, vous aurez des erreurs dans la console du style « n’est pas un objet » ou « undefined ». Suivant que votre plugin agisse sur la partie admin de WordPress ou dans le front end, l’ajout de scripts se fait de manière différente. Pour la partie admin, il faut ajouter un hook sur le admin_head comme suit : add_action(‘admin_head’, ‘my_plugin_admin_head’); La fonction my_plugin_admin_head sera appellée dans chaque page de l’admin dans le html head et vous pourrez alors y inclure vos scripts. Avec la méthode précédente, la fonction sera appellée dans toutes les pages de l’admin. C’est pratique mais pas forcément très propre.


Ajouter un menu dans l’interface d’administration de WordPress


WordPress dispose d’une interface d’administration particulièrement bien faite. Pourquoi ne pas s’appuyer dessus pour l’enrichir de menus qui permettront d’accéder aux fonctionnalités de votre plugin? Pour cela, on va utiliser des hooks (crochets). En fait, cela revient à ajouter dans une table un pointeur de fonction vers la fonction qui génèrera votre menu. WordPress saura que lorsqu’on clique sur ce menu, il doit faire appel à telle ou telle fonction. C’est aussi simple que cela.


Initialiser un plugin wordpress


La première chose à faire lorsque l’on écrit un plugin, c’est de l’initialiser. C’est le point d’entrée entre wordpress et votre plugin. Pour cela, c’est très simple, il suffit de s’accrocher sur le hook plugins_loaded de cette manière : add_action(‘plugins_loaded’, ‘init_plugin’); La fonction init_plugin contiendra le code que vous souhaitez exécuter à l’initialisation de votre plugin. Cela pourra notamment être l’appel à des fonctions pour ajouter des menus dans l’administration, le chargement de paramètres, etc… Mais attention, il ne faut pas confondre initialisation et activation. L’initialisation du plugin se fait à chaque page (l’action plugins_loaded fait partie de la séquence des actions effectuées à chaque page). En revanche, l’activation ne se fait que lorsque l’on active le plugin dans le menu des extensions.


Le header du plugin wordpress


Afin de permettre à WordPress de reconnaître votre fichier php comme un plugin wordpress, il faut insérer un header dans votre fichier php. Voici à quoi cela ressemble : <?php /* Plugin Name: Submission optimizer Plugin URI: http://www.lautre-monde.fr Description: Generation of multiple descriptions for optimized directory submission Author: Olivier Version: 1.0 Author URI: http://www.


Comment écrire un plugin WordPress?


Lorsque j’ai décidé de me lancer dans l’aventure de l’écriture de plugins pour wordpress, j’ai passé pas mal de temps à écumer les différents blogs à la recherche de détails techniques. Malheureusement, il n’y avait pas ou peu de ressource francophone sur le sujet. Alors vous me direz? Mais pourquoi écrire un plugin WordPress? La raison est simple, WordPress dispose d’une architecture très modulaire bien interfaçable avec les dernières technologies java (notamment le jQuery et l’Ajax) mais aussi avec mySql. Je ne parle pas de la gestion des utilisateurs qui est selon moi très sécurisée et extrêmement bien faite sous WordPress.


WordPress 2.7


Ayé! Elle est arrivée! Beau cadeau de Noël me direz vous! La version 2.7 de WordPress est sortie. Je l’ai testé sur un site de développement, elle est pas mal du tout.


Venir à bout du duplicate content


Dans les sites webs en général et sur wordpress en particulier, il y a un ennemi, c’est le duplicate content ou contenu dupliqué. Mais qu’est ce donc? Je vous dois une explication. Google, dans sa recherche de la pertinence, analyse les pages dans le but de les classer entre elles mais également de supprimer les doublons. En effet, il semble inutile de ressortir X fois la même page dans les résultats de recherche. Ainsi, votre site peut voir la majorité de ses pages classées en « duplicate content » si votre contenu semble trop similaire d’une page à l’autre.


Activez le PHP5 pour WordPress!


Depuis quelques temps, je commençais à avoir pas mal de problèmes d’incompatibilités avec un certain nombre de plugins sous WordPress. Soit j’avais des erreurs 500, soit la page de configuration du plugin restait vide, soit il était inopérant bien qu’il semblait fonctionner correctement au premier abord. En fait, tout ceci est dû à la version du PHP utilisée. Par défaut chez mon hébergeur, c’est du PHP 4. J’ai activé le PHP 5 et oh miracle, le plugin de backup fonctionne de nouveau. Pareil pour le crawl rate tracker et le google xml sitemaps!


Et hop!


Allez, c’est l’été, c’est le moment de tester quelques petits changements dans le blog. Après l’installation des tags, je modifie complètement le design avec deux colonnes de part et d’autres de la partie centrale qui était en vigueur depuis le lancement du blog il y a plus de trois ans pour passer à une architecture avec deux colonnes à droite et les notes dans la partie gauche. Cela me semble être plus « Web 2.0 » même si j’ai horreur de ce terme inventé par quelques personnes ayant raté le Web 1.0 au milieu des années 90 et qui essayent de faire croire à tout le monde qu’ils sont en train de recréer l’internet aujourd’hui. J’ai d’autre part l’impression que la publicité est moins intrusive comme cela.


Je tagge le blog…


Après moultes réflexions, j’ai décidé d’entamer un nouveau chantier de grande envergure : le tag à posteriori des plus de 1.100 notes que compte ce blog. J’ai donc installé le plugin Simple Tags et je me suis lancé dans l’édition de masse des tags du blog. Bon c’est vraiment un boulot de romain, il faut pour chaque note réfléchir à deux-trois mots clés et les ajouter. L’interface de Simple Tags est particulièrement pratique pour cela puisque j’en suis déjà à plus de la moitié des notes taggées en moins d’une journée. A part cela, Simple Tags pose quelques problèmes à l’installation sur WordPress 2.


WordPress 2.5.1


Et voilà, on l’attendait, la 2.5.1 est sortie plus vite que prévu, la faute à une faille de sécurité critique dans la gestion des utilisateurs dans la version 2.5. Du coup, l’équipe de WordPress a freezé le code et publié la 2.5.


Migration vers WordPress 2.5


Et voilà, finalement, entraîné par l’euphorie générale autour de WordPress 2.5, je me suis décidé à migrer moi aussi alors que j’avais prévu d’attendre un peu au départ de peur que la migration ne pose de gros problèmes. En fait, c’est relativement simple. Il suffit de supprimer le wp-includes et le wp-admin, d’envoyer les nouveaux répertoires pour les remplacer, de lancer le fichier upgrade.php et c’est parti mon kiki, tu es en 2.5!


WP Ajax Edit Comments


J’ai ajouté le plugin WP Ajax Edit Comments qui vous permet d’éditer vos commentaires pendant 15 minutes après leur soumission. Ceci vous permet de les corriger directement en cas d’erreur. Il marche sous IE et Firefox. Il faut accepter les cookies pour que cela fonctionne correctement.


Des idées pour le thème?


J’ai pas mal retouché le thème depuis la migration sous WordPress en début de mois. J’arrive un peu au bout de mes idées. Est ce qu’il y a des fonctionnalités particulières ou des parties que vous aimeriez bien voir ajoutées ou modifiées? A force de retoucher le CSS, je commence à bien comprendre comment cela fonctionne et je me sens d’attaque pour changer d’autres choses mais je manque un peu d’idées. Je ne voudrais pas que cela soit trop chargé mais j’aimerais bien que ce blog ait vraiment un look sympa et unique.


Robots.txt optimisé pour WordPress


J’ai passé pas mal de temps à essayer d’optimiser le fichier robots.txt pour WordPress. J’ai pour cela utilisé un certain nombre de ressources trouvées sur le web. J’ai commenté chaque ligne pour en faciliter la compréhension. J’utilise en plus de cela le plugin All in one SEO afin d’effectuer un certain nombre d’optimisations. Ce fichier est adapté à ma structure de permaliens.


Suivez les commentaires


J’ai ajouté un plugin (sur recommandation de Gilles) pour vous permettre de suivre les commentaires. Il suffit de cocher la case en dessous du formulaire de commentaire et vous recevez un email dès qu’il y a un nouveau commentaire. C’est pratique pour garder le contact! Si vous voulez la même chose pour les notes (recevoir un email dès qu’il y a une nouvelle note), vous pouvez vous inscrire en bas à droite.


MySQL Replace


J’ai trouvé ce matin la fonction MySQL Replace. Cette fonction permet de remplacer un texte par un autre dans les champs d’une table MySQL. C’est très pratique lorsque l’on veut migrer son blog pour changer les adresses à la volée en 30 secondes sans avoir à tout éditer manuellement. Voici la syntaxe de la query : update table_à_updater set champ_à_updater = replace (champ_à_updater, ‘valeur_à_remplacer’, ‘valeur de remplacement’) Ainsi tous les champs ayant la valeur seront mis à jour avec la nouvelle valeur.


Les plugins indispensables pour WordPress


WordPress a un très gros avantage par rapport à des plates formes fermées comme Typepad, on peut y ajouter des plugins qui décuplent ses fonctionnalités. Voici la liste des plugins dont je vous recommande vivement l’utilisation : Askimet : pour combattre le spam de manière automatique, redoutablement efficace; All in one SEO : pour optimiser notamment les titres des pages afin de les rendre SEO friendly; Contact Form 7 : pour ajouter un joli formulaire de contact (vous évite de laisser votre email visible); One click updater : pour mettre à jour les plugins d’un simple clic; WordPress Stats : pour avoir des statistiques très complètes; Google XML Sitemaps : pour générer une sitemap pour Google; Feedsmith : pour rediriger vos flux RSS dans feedburner; WordPress Database Backup : pour sauvegarder votre base de données et en recevoir régulièrement une copie par email; WordPress video plugin : pour insérer des vidéos facilement dans les notes; Redirection : pour capturer les erreurs 404 et mettre en place des redirections 301/302/307 vers la bonne page.


Mission Accomplished!


Cela y est, c’est terminé! Je viens d’achever ce que l’on appelle un boulot de Romain! J’ai réinjecté plus de 500 images dans mes 950 notes. J’ai remis à jour tous les liens manuellement. La migration de Typepad à WordPress est un peu laborieuse si l’on veut faire un travail propre et en finir avec le système limité de liens Typepad mais c’est un travail nécessaire! J’évalue environ à une vingtaine d’heures le travail nécessaire pour migrer un blog de Typepad à WordPress avec 950 notes si l’on veut un travail propre.


Migration en cours


Cela y est, j’ai effectué le passage sous WordPress avec succès. Cela va me prendre encore quelques jours pour rétablir tous les permaliens et toutes les images mais le plus complexe est passé. A présent, c’est surtout un travail répétitif. J’expliquerai sous peu les raisons qui m’ont poussé à quitter Typepad pour WordPress. En attendant, veuillez m’excuser pour les liens qui ne fonctionnent pas et les images absentes.


WordPress en cinq minutes


Voici une petite note qui explique comment ouvrir et customiser un blog wordpress en cinq minutes. Faire un blog, ce n’est pas compliqué comme vous allez le découvrir grâce à ces instructions. Tout d’abord, il faut sélectionner un hébergeur acceptant le PHP (de préférence le PHP 5 pour n’avoir aucun problème avec les plugins) et offrant une base MySQL. La plupart des hébergeurs classiques offrent ces options pour quelques euros par mois. Ensuite, il faut télécharger le logiciel WordPress, le décompresser et l’envoyer chez votre hébergeur (en FTP). Il faut renommer le fichier wp-config-sample.


L'autre monde | Thème liquide par Olivier