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.


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.


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.


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.


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