Rechercher et remplacer du texte dans tous les messages
Question
J'avais utilisé le ZD Video Plugin pour WP depuis longtemps, et maintenant, depuis mon passage à WP 3.0.2, il ne fonctionne plus. Pour intégrer une vidéo YouTube à l'aide du plug-in, je voudrais juste écrire
[zdvideo] url-de-youtube-video [/ zdvideo]
Maintenant, je dois revenir à YouTube plongement plaine. Comment puis-je écrire une requête MySQL qui recherche [zdvideo]*[zdvideo]
et le remplace par *
?
La solution
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]', '');
Autres conseils
Le meilleur que je sache, MySQL n'a pas beaucoup d'une expression rationnelle remplacer la fonctionnalité - sans parler de sa très maladroite syntaxe regexp. Donc, cela est plus facile à faire au niveau de php. Commencez par aller chercher tous les messages qui ont le shortcode:
$posts = $wpdb->get_results("
SELECT ID, post_content
FROM $wpdb->posts
WHERE post_content LIKE '%[zdvideo]%'
");
Et la boucle puis par 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)
);
}
ou utilisez le plugin Search & Replace , rend facile à utiliser sql WP intérieur; utiliser comme déclaration et vous donner une IUG pour rechercher / remplacer les chaînes dans le contenu et d'autres tables.