22 requêtes MySQL indispensables pour WordPress

Mis à jour le :

WordPress stocke les données (articles, pages, catégories, etc.) dans une base de données MySQL.

Il est donc utile de connaître certaines requêtes pour intervenir rapidement et de façon massive. A ne pas mettre entre toutes les mains toutefois !

Avertissements

Utilisation de phpMyAdmin

Pour exécuter les requêtes listées ici vous devez être capable de vous connecter à phpMyAdmin, un outil généralement accessible depuis l’administration de votre hébergeur (via cPanel ou Plesk par exemple).

Rendez-vous ensuite dans l’onglet SQL correspondant à la base de données préalablement sélectionnée dans la partie gauche de l’interface.

Si vous n’avez jamais utilisé phpMyAdmin, faites très attention ! Vous pourriez tout supprimer en 1 clic de souris, je dis bien un !

Préfixe de la base wp_

Pour chacune des requêtes ci-dessous, n’oubliez pas de remplacer le préfixe wp_ par celui correspondant à votre base de données MySQL.

Il est fort probable que vous n’ayez pas gardé le préfixe par défaut comme il est recommandé par souci de sécurité.

Sauvegarde de votre base

Avant toute intervention dans phpMyAdmin, faites une sauvegarde de votre base MySQL en suivant le tutoriel pour savoir comment sauvegarder automatiquement la base de données MySQL.

Requêtes sur les custom fields

Ajouter un custom field à tous les articles et pages

INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, 'MonCustomField' AS meta_key, 'MaValeur' AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'MonCustomField');

Cette requête ajoute un champ personnalisé (custom field) à tous les articles présents dans la base.

Pensez à remplacer MonCustomField par le nom du champ en question et MaValeur par la valeur de votre choix.

Ajouter un custom field dans les articles uniquement

INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, 'MonCustomField' AS meta_key, 'MaValeur' AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'MonCustomField') AND `post_type` = 'post';

La même chose que précédemment – avec les mêmes conseils, mais pour les articles seulement.

Ajouter un custom field dans les pages uniquement

INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, 'MonCustomField' AS meta_key, 'MaValeur' AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'MonCustomField') AND `post_type` = 'page';

La même chose que précédemment – avec les mêmes conseils, mais pour les pages seulement.

Supprimer un custom field de tous les articles et pages

DELETE FROM wp_postmeta WHERE meta_key = 'MaValeur';

Cette requête a déjà été expliquée dans le tutoriel Supprimer des champs personnalisés (custom fields) dans WordPress.

Supprimer un custom field de tous les articles uniquement

DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.post_type =  'post' AND pm.meta_key =  'MonCustomField'

Idem que précédemment mais pour les articles uniquement.

Supprimer un custom field de toutes les pages uniquement

DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.post_type =  'page' AND pm.meta_key =  'MonCustomField'

Idem mais pour les pages seulement.

Changer la valeur d’un custom field

UPDATE `wp_postmeta`
SET `meta_value` = REPLACE(meta_value, 'AncienneValeur', 'NouvelleValeur')
WHERE `meta_key` LIKE 'MonCustomField';

Remplacez AncienneValeur par la valeur à modifier et NouvelleValeur par la valeur qui doit prendre la place de l’ancienne.

Précisez également le custom field concerné en modifiant MonCustomField.

Requêtes sur les révisions

Effacer l’historique des révisions d’articles et de pages

DELETE FROM `wp_posts` WHERE `post_type` = 'revision'

Cette requête supprime le versionning de vos articles et de vos pages ; autrement dit, les sauvegardes d’état du contenu.

Pour en savoir plus et aller plus loin en spécifiant une date avant suppression, rendez-vous sur le tutoriel Supprimer les révisions d’articles de WordPress.

Rechercher les articles d’une catégorie donnée

SELECT post_title FROM wp_posts p JOIN wp_term_relationships r ON r.object_id = p.ID JOIN wp_term_taxonomy t ON r.term_taxonomy_id = t.term_taxonomy_id JOIN wp_terms terms ON terms.term_id = t.term_id WHERE t.taxonomy ='category' AND terms.name = 'NomCatégorie' AND p.post_type = 'post';

Cette requête liste les articles présents dans une catégorie déterminée par NomCatégorie.

Modifier le statut de publication de vos articles d’une catégorie donnée

UPDATE wp_posts p JOIN wp_term_relationships r ON r.object_id = p.ID JOIN wp_term_taxonomy t ON r.term_taxonomy_id = t.term_taxonomy_id JOIN wp_terms terms ON terms.term_id = t.term_id SET p.post_status = 'publish' WHERE t.taxonomy ='category' AND terms.name = 'NomCatégorie' AND p.post_type = 'post';

Comme précédemment, remplacez le mot-clé NomCatégorie par la catégorie concernée et indiquez le statut de publication de votre choix dans SET p.post_status = ‘publish’ ; soit publish, pending ou draft.

Requêtes de statistiques

Nombre d’articles publiés en 2010

SELECT COUNT(*) FROM wp_posts WHERE post_status="publish" AND post_date BETWEEN '2010-01-01' AND '2010-12-31';

Cette requête vous retournera le nombre d’articles parus au cours de l’intervalle de temps défini. N’oubliez pas de formater vos date à l’anglaise et inversant l’ordre du type année, mois, jour.

Nombre total de commentaires pour vos articles en 2010

SELECT SUM(comment_count) FROM wp_posts WHERE post_status="publish" AND post_date BETWEEN '2010-01-01' AND '2010-12-31' GROUP BY post_status;

Cette requête MySQL vous renvoie la somme des commentaires validés au cours de l’année 2010. Là encore, vous pouvez varier l’intervalle de temps ou même supprimer la période pour obtenir le total de commentaires – total qui est affiché dans le Tableau de bord de WordPress.

Top 10 des articles les plus commentés en 2010

SELECT post_title,comment_count FROM wp_posts WHERE post_status="publish" AND post_date BETWEEN '2010-01-01' AND '2010-12-31' ORDER BY comment_count DESC LIMIT 0,10;

Cette commande affiche la liste des 10 articles ayant reçu le plus de commentaires en 2010.

Top 10 des meilleurs commentateurs sur votre site en 2010

SELECT comment_author,COUNT(comment_count) AS F01 FROM wp_comments,wp_posts WHERE comment_approved=1 AND comment_post_ID=ID AND comment_date BETWEEN '2010-01-01' AND '2010-12-31' GROUP BY comment_author ORDER BY F01 DESC LIMIT 0,10;

Renvoies la liste des 10 lecteurs ayant le plus commenté sur votre site en 2010.

Une nouvelle fois, vous pouvez faire varier l’intervalle de temps.

De là à créer un widget pour afficher le Top commentateur… il n’y a qu’un pas !

Requêtes sur les URLs de WordPress

Changer l’URL du site et l’URL d’installation (Siteurl et Homeurl)

UPDATE wp_options SET option_value = replace(option_value, 'http://www.vieuxsite.fr', 'http://www.nouveausite.fr') WHERE option_name = 'home' OR option_name = 'siteurl';

WordPress stocke le chemin absolu de l’URL de votre site et de l’accueil dans la base de données.

Si vous transférez celui-ci d’un serveur local vers un hébergement en ligne, votre site ne fonctionnera car les URLs d’installation pointeront vers les dossiers locaux.

Cette requête est donc là pour résoudre ce problème.

Changer GUID

UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.vieuxsite.fr', 'http://www.nouveausite.fr');

Après avoir migré votre blog à partir d’un serveur local sur votre serveur en ligne, ou d’un ancien domaine vers un nouveau domaine, vous aurez besoin de réparer les URLs pour le champ GUID dans la table wp_posts. Un point crucial pour convertir correctement vos permaliens en cas d’erreurs de saisie.

Changer les URLs de contenu

UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.vieuxsite.fr', 'http://www.nouveausite.fr');

Pour rappel, les liens présents dans vos articles et pages de WordPress sont inscrites en chemin absolu dans la base de données – et non pas en relatif. Vous devez donc là encore indiquer l’adresse du nouveau site.

Changer le chemin des images seulement

UPDATE wp_posts SET post_content = REPLACE (post_content, 'src="http://www.vieuxsite.fr', 'src="http://amazon.nouveausite.fr');

Si vous avez décidé de basculer vos images dans le cloud computing avec Amazon CloudFront par exemple, il est nécessaire de changer massivement les liens pointant vers chacune de vos images.

Il est également nécessaire de mettre à jour le GUID des fichiers joints :

UPDATE wp_posts SET  guid = REPLACE (guid, 'http://www.vieuxsite.fr', 'http://amazon.nouveausite.fr') WHERE post_type = 'attachment';

Mettre à jour les meta de vos articles

UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.vieuxsite.fr','http://www.nouveausite.fr');

De la même façon que les requêtes d’URLs précédentes, celle-ci agira sur les différentes informations insérées dans vos articles comme les custom fields pour mettre à jour les adresses.

Requêtes administratives

Modifier le compte utilisateur admin

UPDATE wp_users SET user_login = 'Nouveau pseudo' WHERE user_login = 'Admin';

Très utile, cette commande permet de changer le pseudo du compte admin créé par défaut. Cette requête n’est plus utile pour les dernières versions de WordPress qui permette une telle chose dès l’installation.

Remettre à zéro le mot de passe

UPDATE wp_users SET user_pass = MD5( 'nouveau_mot_de_passe' ) WHERE user_login = 'votre_pseudo';

Utilisez cette requête pour modifier à votre convenance le mot de passe de n’importe quel utilisateur WordPress. Il suffit d’indiquer le nouveau mot de passe et le nom de l’utilisateur concerné.

Pour en savoir plus, rendez-vous sur le tutoriel Modifier le mot de passe d’un utilisateur WordPress via phpMyAdmin.

Supprimer les commentaires en attente de modération

DELETE from `wp_comments` WHERE `comment_approved` = '0';

Envoyez cette requête pour supprimer la totalité des commentaires qui n’ont pas encore été validés. Utile dans certains cas de spamming importants !

Supprimer les informations relatives à Akismet (plugin anti-spam de WordPress)

DELETE FROM wp_commentmeta WHERE meta_key LIKE « %akismet% »

Cette requête supprime les informations d’Akismet. Elle a été proposée par Daniel Roch de SEOMIX dans les commentaires de cet article. En voici son explication :

Cela supprime les informations d’Aksimet. A chaque fois qu’une commentaire est contrôlé, Akismet ajoute en base des informations sur la véracité du commentaire : validé ou spam. Il peut aussi rajouter « signalé comme par spam par UTILISATEUR » ou encore « marqué comme légitime par UTILISATEUR ».

Mais une fois validé, inutile de garder ces informations en base de données, surtout avec plusieurs milliers de commentaires.

Merci à lui !

Sources

Cette liste a été constituée à partir de nombreux articles trouvés au fil de mes recherches Google et d’anciens tutoriels sur WordPress Channel.

Tout le mérite revient donc à ses auteurs passionnés de WordPress pour leur travail !

Cette liste de requêtes MySQL pour le CMS WordPress n’est sans doute pas exhaustive ! N’hésitez pas à proposer vos propres requêtes pour qu’elles soient ajoutées dans cet article.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

72 réponses
  1. Avatar de red1
    red1

    Salut
    Comment affichez les informations envoyés par un formulaire CF7 sur une page ?

  2. Avatar de Junson
    Junson

    Bonjour ! j’ai un petit soucis à mon niveau comment faire pour afficher les produits qui ont reçu le plus d’avis ?

  3. Avatar de Cephas Fokou
    Cephas Fokou

    Bonjour, s’il vous plait quelle requête permet de récupérer l’image mis en avant sur un article ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Il vous faut utiliser une fonction PHP pour cela comme the_post_thumbnail() dans la boucle.

  4. Avatar de Lemjid
    Lemjid

    Bonjour ,
    J’ai utilisé la requête suivante pour afficher les menus d’une carte dont le catégorie est Pizza :
    SELECT post_title FROM rs_posts p
    JOIN rs_term_relationships r ON r.object_id = p.ID
    JOIN rs_term_taxonomy t ON r.term_taxonomy_id = t.term_taxonomy_id
    JOIN rs_terms terms ON terms.term_id = t.term_id
    WHERE t.taxonomy =’category’
    AND terms.name = ‘PIZZA’
    AND p.post_type = ‘menu-item’

    Rien n’été afficher  » MySQL a retourné un résultat vide (aucune ligne) » par contre j’ai deux : Sicilienne et Margherita

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour, il ne faut pas utiliser de requêtes SQL pour faire cela. WordPress dispose de toutes les fonctions nécessaires dont WP_Query. 😉

  5. Avatar de Logganeo.fr
    Logganeo.fr

    Bonsoir,
    je viens de rendre compte que ma table wp_postmeta, à partir d’un moment met 0 à la colonne meta_id.
    Je ne sais pas si c’est lié, mais dès que je veux optimisé via WP-Rocket, je perds des images sur trois mois, ainsi que les données pour Yoast SEO.
    Merci

  6. Avatar de thbeau@gmail.com

    Bonjour à tous, effectivement très intéressant tout ceci. Par hazard existe t il quelque part les SQLs pour exploiter wp-Posts, wp_postmeta et wp_orders et wp_ordersmeta. Je souhaiterais visionner les contenus en une ligne par commande. D’avance un grand merci pour votre aide. J’ai pour l’instant ceci
    create or replace view vw_orders
    as
    SELECT wp_woocommerce_order_items.order_item_id,
    wp_woocommerce_order_items.order_item_name,
    wp_woocommerce_order_items.order_item_type,
    wp_woocommerce_order_items.order_id commande,
    wp_woocommerce_order_itemmeta.meta_id meta_id,
    wp_woocommerce_order_itemmeta.order_item_id item_id,
    wp_woocommerce_order_itemmeta.meta_key meta_key,
    wp_woocommerce_order_itemmeta.meta_value meta_value
    FROM artetvino.wp_woocommerce_order_items wp_woocommerce_order_items
    INNER JOIN
    artetvino.wp_woocommerce_order_itemmeta wp_woocommerce_order_itemmeta
    ON (wp_woocommerce_order_items.order_item_id =
    wp_woocommerce_order_itemmeta.order_item_id)
    where meta_key in (‘_qty’,’_product_id’,’_line_total’,’_line_tax’,’cost’,’tax_amount’)
    ou/et ceci
    create or replace view vw_posts
    as
    SELECT wp_posts.ID,
    — wp_posts.post_author,
    wp_posts.post_date,
    — wp_posts.post_date_gmt,
    — wp_posts.post_content,
    wp_posts.post_title,
    — wp_posts.post_excerpt,
    wp_posts.post_status,
    wp_posts.comment_status,
    wp_posts.ping_status,
    — wp_posts.post_password,
    wp_posts.post_name,
    — wp_posts.to_ping,
    — wp_posts.pinged,
    wp_posts.post_modified,
    — wp_posts.post_modified_gmt,
    — wp_posts.post_content_filtered,
    — wp_posts.post_parent,
    — wp_posts.guid,
    — wp_posts.menu_order,
    wp_posts.post_type,
    — wp_posts.post_mime_type,
    — wp_posts.comment_count,
    — wp_postmeta.meta_id,
    wp_postmeta.post_id order_no,
    wp_postmeta.meta_key,
    wp_postmeta.meta_value
    FROM artetvino.wp_postmeta wp_postmeta
    INNER JOIN artetvino.wp_posts wp_posts
    ON (wp_postmeta.post_id = wp_posts.ID)
    where wp_postmeta.meta_value != ‘ ‘
    and substr(post_title,1,5) = ‘order’
    and meta_key not in (‘_customer_user’,’_customer_user_agent’,’_order_key’,
    ‘_customer_ip_address’,’_cart_hash’,’wc_order_key’,’_edit_lock’)
    Perso une vue me parait plus simple pour travailler.

    cdt

  7. Avatar de aubeufyoann
    aubeufyoann

    Bonjour,

    Je recherche à changer la date des post sur WordPress :

    Voilà mes tentatives :

    UPDATE wp_posts SET post_date = FROM_UNIXTIME(
    UNIX_TIMESTAMP(‘2016-03-07 12:00:00’) + FLOOR(0 + (RAND() * 31557600)))
    WHERE post_status = ‘publish’;

    UPDATE wp_posts SET post_date = REPLACE (
    post_date,
    ’2015-09-23′,
    ’2016-03-07′)

    UPDATE wp_posts SET post_status = ‘future’ WHERE YEAR(post_date)=2015 AND post_type=’post’;

    UPDATE wp_posts SET post_date = ‘2015-09-25 10:00:27′ WHERE YEAR(post_date)=2015 AND post_type=’post’;

    UPDATE wp_posts SET post_date_gmt = ‘2015-09-25 10:00:27′ WHERE YEAR(post_date)=2015 AND post_type=’post’;

    UPDATE wp_posts SET post_modified = ‘2015-09-25 10:00:27′ WHERE YEAR(post_date)=2015 AND post_type=’post’;

    UPDATE wp_posts SET post_modified_gmt = ‘2015-09-25 10:00:27′ WHERE YEAR(post_date)=2015 AND post_type=’post’;

    Pouvez vous m’aider ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour,

      je ne suis pas expert en base de données. Par contre, faites une sauvegarde au préalable de votre base ! 😉

  8. Avatar de Chouchou Et Loulou, les flammes jumelles
    Chouchou Et Loulou, les flammes jumelles

    Merci pour l’article, et comment fait on pour supprimer toutes les pages ? Vu que j’ai fait un import /export…

  9. Avatar de lesebooksdemarie
    lesebooksdemarie

    Bonjour Aurélien,
    J’ai suivi attentivement la requête #18 car après de mon passage de wp en local (wamp) à ovh, j’ai visiblement un problème puisque mes photos ne s’affichent pas, ainsi que tout ce qui a été personnalisé en local à l’aide des extensions. J’ai pensé que c’était un problème de chemin mais maintenant j’en doute puisque la requête #18 n’a eu aucun effet. Une idée?
    Merci d’avance

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour, il te faut effectuer les requêtes 15 à 19 pour modifier les URLs dans ta base de données. Ou bien utiliser un script comme Search Replace Database.

  10. Avatar de Jazoote
    Jazoote

    Bonjour Etian, j’ai le même problème que toi. Je cherche à mettre à jour les url des images de la galerie des produits woocommerce. Je cherche une requête à exécuter, en aurais-tu trouvé une ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Dans ce cas, un plugin serait conseillé ou un script externe. Attention aux données sérialisées, sauvegardes obligatoires et vérifiées.

  11. Avatar de Benoit
    Benoit

    Bonjour Aurélien,

    J’ai tenté avec une valeur vide, avec une variable %, mais ça ne passe hélas pas.

    Merci d’avoir pris le temps de me répondre 🙂

  12. Avatar de Benoit
    Benoit

    Bonjour,

    J’aimerais modifier ma base de données afin de changer la valeur actuelle de « meta_value ». Mais cette valeur actuelle est souvent différente (je souhaite donc maintenant mettre la même partout).

    Pour celà, dois-je laisser vide la partie ‘AncienneValeur’ dans la requête ?

    #7 – Changer la valeur d’un custom field

    UPDATE `wp_postmeta`
    SET `meta_value` = REPLACE(meta_value, ‘AncienneValeur’, ‘NouvelleValeur’)
    WHERE `meta_key` LIKE ‘MonCustomField’;

    Merci 🙂

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Hello, tout d’abord sauvegardes ta base de données via phpMyAdmin.

      Ensuite, je n’ai pas la réponse avec certitude mais il faudrait tester en mettant une valeur vide ou une variable comme un pourcentage…

  13. Avatar de jerome
    jerome

    Salut Aurélien et merci pour ces requêtes SQL.

    J’ai une question concernant l’allègement de ma base de donnée :

    Voilà, j’ai installé le plugin « All In One WordPress Security and Firewall » depuis maintenant 1 an, et ce plugin garde les erreurs de connexion dans une table nommée « wp_aiowps_failed_logins ».
    Le problème est que cette table, au bout d’un an, est la plus grosse de ma base de donnée et fait maintenant plus de 12 Mo à elle seule…

    Bref, est-ce que je peux vider cette base ? Genre faire check box de la table « wp_aiowps_failed_logins » et clicker sur empty en bourrin ?
    ça risque pas de casser quelque chose d’autre ? j’ai assez peur en fait…

    Merci d’avance pour tes conseils,
    Jérôme

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Je déconseille l’utilisation de ces plugins de sécurité. Il existe peut être une option pour vider les logs depuis les réglages du plugin. Sinon, oui via phpMyAdmin avec sauvegarde préalable.

      1. Avatar de jerome
        jerome

        Merci pour ton aide !

  14. Avatar de blh
    blh

    Bonjour,
    je voudrais effacer tous les users d’une table dont les adresses mail sont bien précises, Cette écriture est-elle exacte ?
    DELETE FROM `wp_users` WHERE user-email = ‘ hotmail.com’ and user-email = « outlock.com ‘

    ma version de Mysql : 5.5.37-cll

    merci .

  15. Avatar de shiloh
    shiloh

    jaimerais aussi savoir comment récupérer les éléments de la commande d’un client qui a choisi un paiement paypal dans sa base de donnée wordpress

  16. Avatar de shiloh
    shiloh

    merci pour ces sql. cependant,il faut les insérer ou dans sa page wordpress

  17. Avatar de amine@gmail.com

    Bonjour,
    j’aimerais avoir la requête sql pour afficher les titre des articles,

  18. Avatar de gatemehdi
    gatemehdi

    Vous nous avez donné les requêtes SQL sans nous donner les variables php WordPress qui gère ça, à la rigueur pour les champs…etc on peut regarder les tables non ?

  19. Avatar de Vintz
    Vintz

    En fait c’est au petit bonheur la chance pour voir le texte correctement.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Google Chrome comporte un bug sur les polices. Si vous vidait à fond votre cache, ça devrait à nouveau fonctionner suite à un correctif appliqué ce weekend. Beaucoup de sites sont impactés… 🙁

  20. Avatar de Vintz
    Vintz

    C’est normal le texte blanc sur fond blanc? Non c’est pas normal le webmaster devrait corriger ça vite.

  21. Avatar de Manuel AGUILA
    Manuel AGUILA

    Bonjour
    Après l’importation d’une base je voudrais mettre toutes les images déjà dans des articles à la une
    Cela est il possible via une requête ou une autre solution requête ?
    Merci
    Manuel

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour Manuel,

      vous cherchez un moyen d’ajouter automatiquement la première image comme image à la une ?

      1. Avatar de Manuel AGUILA
        Manuel AGUILA

        Dans le cadre d’un refonte d’un site j’ai installé wordpress, un thème et un plugin permettant la mise à la une des images.
        Pour les nouveaux articles pas de souci en mettant les images à la une, elles apparaissent dans les extraits.
        Par contre j’ai importé 1000 articles de l’ancien site. J’ai bien les images dans les articles mais pas dans les extraits car elles ne sont pas a la une.
        J’ai cherché en vain dans la base un champ concerné pour faire une requête et les mettre toute à la une mais ne trouve pas de champ pour cela.
        Je pense passer a côté de quelque chose 🙂 !
        Merci de votre aide

        1. Avatar de Aurélien Denis
          Aurélien Denis
          1. Avatar de Manuel AGUILA
            Manuel AGUILA

            Merci, beaucoup je vais regarder cela avec attention

  22. Avatar de Romain VINCENT
    Romain VINCENT

    Bonjour à tous,

    je suis en pleine migration TypePad > WP et je recherche une requête SQL pour ajouter « .jpg » à la fin des URLs de mes images insérées dans les Posts : TypePad ne les inclus pas dans ses URLs…

    Merci d’avance pour votre aide.

    1. Avatar de Romain VINCENT
      Romain VINCENT

      Finalement je me suis débrouiller en utilisant le plugin Search Regex qui permet de remplacer n’importe quel contenu dans les posts.

  23. Avatar de Le Carlo
    Le Carlo

    URGENT !!!!!!!!

    Bonjour,
    j’aimerais avoir la requête sql pour afficher les titre des articles, les contenus, leurs photos principales d’une catégorie à choix.

    Afficher selon la date de création; les plus récents – plus vieux

    Merci !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      WP_Query sur le codex.

  24. Avatar de Oksuz
    Oksuz

    Le code que vous fournissez pour changer le chemin des images seulement, je dois l’insérer où exactement ? Dans wp_posts, j’ai un bout de code dans un encadré :
    SELECT *
    FROM `wp_posts`
    LIMIT 0 , 30

    Je dois effacer tout ce code pour le remplacer par le vôtre ?

    et si en plus de ça, je dois changer changer les URLs de contenu, comment vais je faire ? L’un en dessous de l’autre… enfin je ne sais pas.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      La méthode consiste à cliquez sur le nom de votre base de données dans phpMyAdmin. Une fois que vous voyez sa structure, cliquez sur SQL puis collez les requêtes une par une. Autrement dit, il faut les exécuter l’une après l’autre en prenant soin de modifier les informations saisies.

      Toujours faire une sauvegarde préalable !

      1. Avatar de Etian
        Etian

        Bonsoir et bravo pour tout le travail effectué.
        J’utilise WP3.8 et woocommerce.
        J’ai exporté mes produits par l’outil export de wp et importer mes produits woocommerce par ce même outil d’import
        Tout est là, mais mais mes photos de produits sont avec les anciennes url. j’ai dupliqué les photos dans le répertoire upload de mon nouveau WP, mais je n’arrive pas à trouver à quel endroit je peux changer le chemin des photos produits de mon nouveau wp

        une idée ?

        Et bonne année à tous !

  25. Avatar de Justine Amiotte
    Justine Amiotte

    Bonjour,
    Super article merci beaucoup !
    J’y ai trouvé beaucoup de réponse. cependant, je reste bloqué sur un élément. j’ai crée un champ personnalisé « repeater » dans mes articles et j’aimerais créer une fonction capable d’aller récupérer les contenus des tableaux spécifiques à chacun des articles pour aller les afficher dans d’autres pages. Est-ce possible ? Existe-t-il une requête pour ça ? Pourriez-vous m’apporter votre aide ?
    Merci beaucoup !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Un champ repeater via ACF ? Si oui, tout est dans leur documentation. 😉

  26. Avatar de Sylvain
    Sylvain

    Salut !!
    Tout d’abord merci pour ton blog hyper précieux qui est une mine d’information pour les astuces wordpress !
    J’explique ma situation, Les images de mon site n’apparaissent pas…
    Dans la rubrique média de wordpress, lorsque j’upload, le chemin apparait bon (www.moinsite.fr/wp-content/uploads/…), mais à la lecture lorsque j’inspecte l’élément, je m’aperçois qu’il m’indique un autre chemin (www.monsite.fr/wordpress/wp-content/uploads/…).

    J’ai migré mon site wordpress de local à serveur distant, et j’ai bien effectué le changement de nom de bdd et ses identifiants.
    J’ai aussi bien redirigé mon site qui était avant ‘www.monsite.fr/wordpress’ en ‘www.monsite.fr’ (le fichier .htaccess est bon aussi apparemment.)
    En regardant dans ma bdd à la table wp-posts j’ai vu les GUID qui notifiaient un chemin d’image ‘www.monsite.fr/wordpress/wp-content/uploads’ j’ai donc fait une requête mysql afin de changer ce chemin.
    Mais toujours rien, les images n’apparaissent toujours pas…

    Comment puis je résoudre ce problème ?
    Merci infiniment !

  27. Avatar de Julien Mauryj
    Julien Mauryj

    Salut, je regarde les articles les plus populaires SQL sur WordPress avant de sortir le volume 2 du mien pour limiter les doublons.

    J’ai relevé quelques erreurs dans le tien comme par exemple sur les custom fields – y a pas de colonne post_type dans la table postmeta mais on peut relier avec la table post via l’id des posts qui lui est présent en tant que colonne.

    a++

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Pourtant cette requête est fonctionnelle… tu es sûr ?

      1. Avatar de Julien Maury
        Julien Maury

        Certain ! Y a pas de colonne post_type dans postmeta c’est dans la table post qu’elle se trouve et comme je l’ai mis dans l’autre commentaire, ça se fait relativement simplement en reliant via les ID de post

  28. Avatar de Clément
    Clément

    Bonjour, j’aurai une petite question par rapport aux URLs, quel est la requête à effectuer pour supprimer des articles par rapport à leur URLs ? ou par rapport à une partie de l’url (par exemple avec « -2/ » dans l’url (articles en double lors d’une importation wordpress :/)
    merci d’avance et encore merci pour tous ces tutoriels de très bonne qualité !

  29. Avatar de iza
    iza

    Bonjour,
    Apres une mauvaise manipulation du plugin better wp security, je n´arrive plus à acceder a ma page Admin, en fait quand je mets http://www.monblog/wp-admin/ il indique page introuvable…

    Je me suis risquée a manipulé ma base de donnée chez ovh…j´ai repéré le plugin sous cette appelation bwps lockout et bwps log, je les ai supprimés…sans succes! Je me dit autant supprimer tous les plugins pour être tranquile…à moins qu´il y est une autre solution?

    J´ai également éssayé via filezilla mais je n´ai que le plugin akismet..les autres je ne les ai pas repéré…enervant tout ca d´autant plus que je suis débutante et que ca fait un mois que je tiens mon blog sans pb et maintenant tout est à refaire!!! Peut être que vous avez une solutions…merci d´avance!

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Si vous avez une sauvegarde du FTP + base de données c’est possible de restaurer. Mais effectivement, il ne faut pas installer des plugins dédié à la sécurité sans comprendre ce que cela implique. Toujours lire les documentations. En développement Web, les boutons annuler l’opération n’existent pas.

      C’est difficile de vous aider à ce point étant donné que vous avez effectué de nombreuses actions… mais essayez de restaurer une base de données en supprimant au préalable le dossier du plugin concerné ainsi que le fichier .htaccess (fichier invisible) à la racine du FTP. C’est peut-être lui le responsable du blocage d’accès à l’admin.

  30. Avatar de guy
    guy

    Bonjour
    je te serais reconnaissant de me souffler la requête qui me permettrait de mettre à zéro le champ correspondant à « A propos de l’auteur » en une seule opération… Pour des raisons inexplicables je n’arrive pas à m’en débarrasser sous le thème MANTRA. Finalement, en vider le contenu me va aussi mais je suis trop frileux dès qu’il s’agit de BD.
    Merci pour ce que tu as déjà partagé.
    Cdt
    Guy
    Je m’avance mais je crois que je fais allusion à
    Table lpc_usermeta
    umeta_id = 4
    meta_key = description

  31. Avatar de momo-fr
    momo-fr

    Très bien, c’est ce que je cherchais depuis pas mal de temps… surtout que j’ai eu, par le passé, pas mal de soucis avec les requêtes MSQL. Une requête mal saisie peut dégénérer en gloubiboulga géant dans la base… :-))

  32. Avatar de david
    david

    excellente ressource technique. très utile notamment pour l’update mysql de la base sql pour faire la passerelle entre un serveur local et un serveur réel, les liens des images dans les articles présentant en général une anomalie. c’est la commande #18 – Changer le chemin des images seulement. merci à vous.

  33. Avatar de rananjason
    rananjason

    Excellentes ressources techniques !
    Par contre, j’essaie de trouver des articles pouvant m’aider à traiter ma base de données WordPress (transformé en vrai CMS) chargé de custom_types et custom_fields pour une exportation en SQL ou tableur excel pour d’autres utilisations (tri, filtre, etc.)
    Donc, WordPress va me servir de frontoffice et publication « limitée » et cette base exportée contiendrait toutes les données.
    Merci d’avance pour les suggestions et réponses dans ce sens.

  34. Avatar de Delphine
    Delphine

    Bonjour, intéressant ! Je cherche une solution pour remplacer post_date par les valeurs contenues dans un custom field (en migrant de Joomla vers WordPress, j’ai perdu le contenu de post_date mais j’ai pu importer les dates dans un custom field). Auriez-vous une suggestion ? Merci d’avance !

  35. Avatar de Lily
    Lily

    Juste top !!!!
    Et indispensable, notamment lorsqu’on travaille en local !

    Mille merci pour cet article !

  36. Avatar de Daniel Roch
    Daniel Roch

    Cela supprime les informations d’Aksimet. A chaque fois qu’une commentaire est contrôlé, Akismet ajoute en base des informations sur la véracité du commentaire : validé ou spam. Il peut aussi rajouter « signalé comme par spam par UTILISATEUR » ou encore « marqué comme légitime par UTILISATEUR ».

    Mais une fois validé, inutile de garder ces informations en base de données, surtout avec plusieurs milliers de commentaires.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Explication et requête ajoutée dans la liste, encore merci ! 😎

  37. Avatar de Daniel Roch
    Daniel Roch

    Pas mal. La liste est relativement complète et intéressante.

    J’en rajouterai une : supprimer tout information d’Akismet sur les commentaires, surtout pour les commentaires déjà validés (cela peut réduire de plusieurs Mo une base de données WordPress). Par contre, je ne la retrouve plus… 🙁

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Retrouves-là !! 🙂

      1. Avatar de Daniel Roch
        Daniel Roch

        Trouvé !

        DELETE FROM wp_commentmeta WHERE meta_key LIKE « %akismet% »

        1. Avatar de Aurélien Denis
          Aurélien Denis

          Et cela supprimes quelles informations précisément ? Je vais la rajouter dans l’article mais il me faut plus d’infos. 😉

  38. Avatar de Sandra
    Sandra

    Bonjour! Super article! Par contre, pourriez-vous m’indiquer comment importer des articles directement à partir de mysql?
    Merci par avance 🙂

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Ce tutoriel concernant l’importation de base MySQL devrait faire l’affaire. 😉

  39. Avatar de Aurélien Denis
    Aurélien Denis

    Bug corrigé !

  40. Avatar de Richnou
    Richnou

    Un peu trop de http:// au début…

    La bonne adresse :
    https://wpchannel.com/wordpress/tutoriels-wordpress/optimiser-wordpress-supprimer-revisions-articles/

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bug corrigé ! Merci ! 😎

  41. Avatar de Daniel
    Daniel

    Je confirme aussi les dire de Richnou : un year(post_date) = 2010 est plus simple à utiliser (et à recopier).

    Pour ce qui est de supprimer les commentaires en attente de modération, WordPress le fait par défaut dans une des options de l’administration.

    Ceci dit, c’est un excellent article que voilà. Beau boulot.

  42. Avatar de Alex
    Alex

    Pas mal du tout! très partique

    Quelqu’un saurait comment intégrer le champ user_name de la base à la fonction de recherche??

  43. Avatar de olive
    olive

    favorisé direct ! Merci l’ami !

  44. Avatar de youyouk
    youyouk

    Merci beaucoup pour cet article, je bookmarke #indispensable

  45. Avatar de Richnou
    Richnou

    Joli travail de compilation !

    Pour contribuer, je remplacerais peut être

    post_date BETWEEN ‘2010-01-01’ AND ‘2010-12-31’

    par un plus simple

    year(post_date) = 2010

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *