Requêtes mySQL utiles

  • Statut : non résolu
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #474731
    piekes
    Membre
    Maître WordPress
    725 contributions

    Bonjour

    Je viens de mettre à jour un blog en changeant l’un ou l’autre plugins et j’ai eu à supprimer ou ajouter de façon systématique des Custom fields. Pas question de faire ça “à la main” avec plusieurs centaines de posts… Seule solution envisageable, une requête mySQL effectuée grâce à l’outil adéquat : PHPmyAdmin, mySQL Tools ou ligne de commande.
    Comme je ne suis vraiment pas une bête en SQL, j’ai mis un peu de temps à écrire mes requêtes : j’ai donc pensé qu’il pourrait être utile d’en faire profiter d’autres blogueurs. Attention, il y a deux types d’apostrophes différents utilisés dans ces requêtes : source fréquente d’erreurs de saisie.

    CUSTOM FIELDS

    Ajouter un Custom field et sa valeur à tous les posts existants : remplacer ‘MyField’ et ‘MyValue’ par les valeurs appropriées. Donner à ‘MyValue’ la valeur NULL (sans apostrophes) pour un champ vide.

    INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, ‘MyField’ AS meta_key, ‘MyValue’ AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = ‘MyField’);

    Version pour insérer uniquement dans les ARTICLES et pas dans les PAGES

    INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, ‘MyField’ AS meta_key, ‘MyValue’ AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = ‘MyField’) AND `post_type` = ‘post’;

    Ou l’inverse :

    INSERT INTO wp_postmeta (post_id, meta_key, meta_value) SELECT ID AS post_id, ‘MyField’ AS meta_key, ‘MyValue’ AS meta_value FROM wp_posts WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = ‘MyField’) AND `post_type` = ‘page’;



    Supprimer un ‘Custom field’ de tous les posts existants : remplacer ‘MyField’ par les valeurs appropriées.

    DELETE FROM wp_postmeta WHERE meta_key = ‘MyField’;

    Ou seulement s’il s’agit d’articles :

    DELETE FROM wp_postmeta WHERE meta_key = ‘MyField’  AND `post_type` = ‘post’;

    Ou à l’inverse, de pages

    DELETE FROM wp_postmeta WHERE meta_key = ‘MyField’  AND `post_type` = ‘page’;



    Changer la valeur d’un Custom field dans tous les posts existants : remplacer ‘MyField’, ‘OldValue’ et ‘NewValue’ par les valeurs appropriées. Donner à ‘NewValue’ la valeur NULL (sans apostrophes) pour un champ vide. Attention aux différences entre les deux types d’apostrophes !!!

    UPDATE `wp_postmeta` SET `meta_value` = replace(meta_value, ‘OldValue’, ‘NewValue’) WHERE `meta_key` LIKE ‘MyField’;

    REVISIONS

    Effacer l’historique des révisions
    Supprimer le AND et la fin de la requête pour effacer toutes les révisions

    DELETE FROM `wp_posts` WHERE `post_type` = ‘revision’ AND `post_date` <= '2008-12-20 23:59:59';


    #693706
    Comme une image
    Participant
    Maître WordPress
    2493 contributions

    Merci pour ce retour…

    J’en profite pour offrir quelques requêtes que j’utilise parfois :

    — 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 = ‘NOM DE MA CATEGORIE’ 
    AND p.post_type = ‘post’;
    
    — Modifier les 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 = ‘NOM DE MA CATEGORIE’ 
    AND p.post_type = ‘post’;

    #693707
    elkwaet
    Participant
    Initié WordPress
    3 contributions

    Bonjour,
    C’est vrai que ce sujet date, mais, j’aurais besoin d’une requête sql de ce genre pour CHANGER LA DATE DE PUBLICATION D’UN NOMBRE D’ARTICLE SELECTIONNÉS! Comme dans le dashboard, il n’y a cette possibilité que pour UN et UN SEUL article à la fois..
    Merci d’avance

    #693708
    Hanami
    Participant
    Chevalier WordPress
    173 contributions

    Bonsoir,

    Vous pouvez essayer la requête suivante qui marche sur ma base de test:

    UPDATE wp_posts_bug2
    SET post_date = “2016-01-10 20:30:10”, 
          post_date_gmt= “2016-01-10 20:30:10”
    WHERE locate (‘dummy’, post_title)0

    Il suffit de changer le nom de la base ,les dates et le critère de sélection.
    Il faut changer post_date et post_date_gmt.
    Le format est yyyy-mm-dd hh:mm:ss

    Marc.

    #693709
    Franck (fge)
    Modérateur
    Maître WordPress
    9583 contributions

    Hanami, ce n’est pas sérieux de ne pas reprendre des discussions qui ont plus de 7 ans. WordPress (et la base de données) a beaucoup évolué dans ce laps de temps. De plus c’est le forum destiné à recevoir des trucs et astuces et non par au support. Merci d’ouvrir une discussion dans le forum de support en remplissant les informations demandées.

5 sujets de 1 à 5 (sur un total de 5)
  • Le sujet ‘Requêtes mySQL utiles’ est fermé à de nouvelles réponses.