it-swarm.com.de

Suchen und ersetzen Sie Text in allen Beiträgen

Ich hatte das ZD-Video-Plugin schon lange für WP verwendet und seit meinem Wechsel zu WP 3.0.2 funktioniert es nicht mehr. Um ein YouTube-Video mit dem Plugin einzubetten, würde ich einfach schreiben

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

Jetzt muss ich wieder zum einfachen Einbetten von YouTube zurückkehren. Wie schreibe ich eine MySQL-Abfrage, die nach [zdvideo]*[zdvideo] sucht und diese durch * ersetzt?

2
GPX

Was ist mit diesen beiden Abfragen?

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

Am besten ist mir bewusst, dass MySQL nicht viel über eine Regexp-Ersetzungsfunktionalität verfügt - ganz zu schweigen von seiner sehr klobigen Regexp-Syntax. Dies ist also am einfachsten auf PHP-Ebene zu tun. Beginnen Sie, indem Sie alle Posts mit dem Shortcode abrufen:

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

Und dann das Ergebnis durchlaufen:

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

oder benutze das Plugin Suchen & Ersetzen , macht die Verwendung von SQL in WP einfach; Verwenden Sie die Anweisung like und geben Sie eine GUI zum Suchen/Ersetzen von Zeichenfolgen in Inhalten und anderen Tabellen an.

1
bueltge