web-dev-qa-db-fra.com

Rechercher et remplacer le texte dans tous les messages

J'avais utilisé le plugin vidéo ZD pendant WP longtemps, et maintenant, depuis mon passage à WP 3.0.2, cela ne fonctionne plus. Pour intégrer une vidéo YouTube à l’aide du plugin, j’écrirais simplement

[zdvideo] url-of-youtube-video [/ zdvideo]

Maintenant, je dois revenir à l'intégration de YouTube en clair. Comment écrire une requête MySQL qui recherche [zdvideo]*[zdvideo] et la remplace par *?

2
GPX

Qu'en est-il de ces deux requêtes?

UPDATE wp_posts SET post_content = REPLACE(post_content, '[zdvideo]', '');
UPDATE wp_posts SET post_content = REPLACE(post_content, '[/zdvideo]', '');
5
TheDeadMedic

Mieux, je suis conscient que MySQL n’a pas beaucoup de fonctionnalités de remplacement d’expression rationnelle - sans parler de sa syntaxe très maladroite. C'est donc plus facile à faire au niveau php. Commencez par rechercher tous les articles qui ont le shortcode:

$posts = $wpdb->get_results("
SELECT ID, post_content
FROM $wpdb->posts
WHERE post_content LIKE '%[zdvideo]%'
");

Et ensuite, parcourez le résultat:

foreach ($posts as $post) {
  $post->post_content = preg_replace(
    "/\\[zdvideo\\](.+?)\\[\\/zdvideo\\]/",
    "$1", # $1 holds the url... format as needed
    $post->post_content);

  # Be sure to verify on a few posts before actually saving...
  # var_dump($post->post_content);

  $wpdb->query("
  UPDATE $wdpb->posts
  SET post_content = '" . $wpdb->escape($post->post_content) . "'
  WHERE ID = " . intval($post->ID)
  );
}
5
Denis de Bernardy

ou utilisez le plugin Search & Replace , facilite l'utilisation de sql à l'intérieur de WP; Utilisez la même déclaration et vous donner un GUI pour rechercher/remplacer des chaînes dans le contenu et les autres tableaux.

1
bueltge