Вопрос

Я долго использовал плагин ZD для WP, и теперь, так как мой переход к WP 3.0.2, он больше не работает. Чтобы встроить видео на YouTube, используя плагин, я бы просто писал

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

Теперь мне нужно вернуться к простым встраиванию на YouTube. Как написать запрос MySQL, который ищет [zdvideo]*[zdvideo] и заменяет это на *?

Это было полезно?

Решение

Как насчет этих двух запросов?

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

Другие советы

Лучше всего я знаю, у MySQL нет большой функциональности regexp - не говоря уже о его очень неуклюже синтаксисе режима. Так что это легче всего на уровне PHP. Начните с извлечения всех сообщений, которые имеют шорткод:

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

А затем проберите результат:

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)
  );
}

или используйте плагин Поиск и заменить, облегчает использование SQL внутри WP; Используйте подобный оператор и дайте вам графический интерфейс для поиска/заменить строки в содержании и других таблицах.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с wordpress.stackexchange
scroll top