Tag : mysql

Supprimer tous les articles d’une catégorie sur un blog WordPress

Parfois on a besoin de faire un peu le ménage et ainsi supprimer tous les articles d’une catégorie qui ne correspondraient plus à la ligne éditoriale du blog. Si vous avez une dizaine d’articles vous pouvez toujours les supprimer à la main dans l’interface de gestion du blog mais en revanche si vous avez plus de 500 articles la chose se complexifie !

Après quelques tests et recherches le plus simple est donc de les supprimer directement dans la base de données Mysql du blog grâce à cette requête Mysql :

DELETE a,b,c,d
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id =XXXX

XXXX est donc le numéro de la catégorie à supprimer! Si vous n’êtes pas certain faite cette requêtes mysql pour vérifier que ce sont les bons articles à supprimer :

SELECT *
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON ( a.ID = b.object_id )
LEFT JOIN wp_postmeta c ON ( a.ID = c.post_id )
LEFT JOIN wp_term_taxonomy d ON ( d.term_taxonomy_id = b.term_taxonomy_id )
LEFT JOIN wp_terms e ON ( e.term_id = d.term_id )
WHERE e.term_id =XXXX

[WordPress] Retrouver les images à la une sur vos anciens articles

Je ne sais pas si chez vous c’est pareil mais lors d’une mise à jour de mes blogs (la version 3.4 si je me souviens bien) il s’avère que ma gestion des images à la une a été un peu perturbée. Avant je fonctionnais avec des plugins pour « ajouter » automatiquement des images à la une aux articles qui n’en avaient pas car cette fonctionnalité n’est arrivée qu’à la version 3 de wordpress. Cela fonctionnait très bien jusqu’au passage à WordPress 3.4.

Après de longues recherches sur les forums dédiés je n’ai pas trouvé de solution miracle à la disparition des mes images à la une pour tous mes articles avant décembre 2009. Alors j’ai essayé de comprendre ce qu’il se passait… Direction phpMyAdmin pour visiter les bases de données du blog pour voir ce qu’il se passe avec les « featured images ». En regardant la table wp_postmeta j’ai constaté que la clé « _thumbnail_id » comportait des valeurs inexistantes pour tous les articles datés d’avant décembre 2009, comme si wordpress avait volontairement renseigné ce champ avec une valeur nulle. Pour information cette valeur doit être le « post_id » de l’image utilisée en « featured image ». Alors plutôt que d’attendre une solution miracle je ne suis dit que l’on pouvait peut être affecter directement l’id d’une image utilisée dans l’article afin d’avoir une vrai « featured image ».

Voici donc comment j’ai procédé : je sélectionne tous les champs avec la clé _thumbnail_id, puis je recherche dans la table wp_posts s’il y a des images associées à l’article dont nous avons récupéré l’identifiant, si oui je prend la première image, ensuite il ne reste plus qu’à modifier la table wp_postmeta pour renseigner le bon « id » de l’image que l’on souhaite utiliser comme image à la une.

Une fois cette modification faite, vous pouvez faire une passe avec un plugin comme « Auto Post Thumbnail » pour regénéré les vignettes, cela ne fait pas de mal et corrigera quelques bugs d’affichage.

Pour les plus motivés, vous pouvez retrouver ce bout de code sur github, libre à vous de l’améliorer bien entendu! Pour les autres, désolé cet article est un peu pointu!


L’importance de la sauvegarde de votre site

La semaine dernière mon site hébergé chez OVH, french20 (qu’il faut que je relance d’ailleurs) a été victime d’une attaque d’un pirate qui a eu la bonne idée de mettre un script PERL exécutant des actions non identifiées. Quelques secondes après OVH suspendait l’accès HTML au site, ce qui est plutôt une bonne chose compte tenu de ce type d’attaque.

J’ai tenté de réactiver l’accès HTML au blog mais sans succès. L’unique solution a été d’effacer complêtement les données du serveur et de remettre une version saine des fichiers. Heureusement que j’avais un backup pas trop vieux du site…

Afin de vous protéger efficacement contre ce genre d’attaque il faut faire fréquemment des sauvegardes des fichiers sur le serveur (je fais cela au moins une fois par mois à la mano) mais aussi faire des backup de la base mysql mais pour mon cas cette action est effectuée tous les jours pour les blogs les plus actifs et une fois par semaine pour les moins actifs. Afin de faire le backup mysql j’utilise le plugin WordPress Database Backup qui remplit très bien cette fonction. Mais il faut aussi penser à avoir un fichier .htaccess qui interdise l’accès à vos répertoires critiques comme celui des plugins pour les utilisateurs de wordpress.

Par ailleurs, ces recommandations ne vous garantissent pas de l’attaque des pirates puisque des sites majeurs comme webrankinfo se font eux aussi pirater (dans ce cas c’est un piratage des DNS dixit sébastien Billard)…


Sun achète MySQL

Voici l’une des acquisitions les plus importantes de ce début d’année. Sun a annoncé hier l’acquisition de MySQL qui édite une solution de bases de données éponyme. Le montant de l’achat est d’un milliard de dollars dixit le blog du CEO de SUN ce qui est énorme…

sun mysql

Le deal est principalement en cash (800 millions de dollars) et en partie en action (200 millions de dollars). Cet achat est aussi fortement symbolique pour le monde de l’open source car cela donne des éléments de valorisation intéressant pour ce secteur.

A quand le rachat de Mozilla par un grand acteur du monde du logiciel?


Recherche conseils techniques

Voilà depuis un petit moment, wordpress fait planter mon serveur en consommant toute la mémoire (500Mb), nécessitant de stopper et de relancer le serveur apache (pour libérer la mémoire). Personnellement je n’ai aucune idée de la cause de cette surconsommation de mémoire, je suis donc à la recherche de conseil pour identifier le problème lié à wordpress.

J’utilise un paquet de plugins dont les principaux sont présentés sur cette page, de plus le blog est « caché » grace au plugin wp-cache qui doit normalement limiter la sollicitation de la base mysql. Le phpinfo du serveur est ici.

Qui a une idée? Merci pour votre aide…