@lagudal

Можно ли, и если да, то как сделать такие массовые изменения в бд? Запросами или регулярками в дампе? Скриптом?

Задача, для меня не простая.
Есть старый сайт на wordpress, который давно не обновлялся. Постов сотни, и в свое время они писались как кому то тогда казалось правильно.
Сейчас проводится коренное обновление, на последнюю версию и последнюю тему, дочернюю от 2022, и править эти сотни постыов вручную очень не хочется.
Итак, что надо.

1. В таблице wp_posts найти, если поля post_content и post_excerpt начинаются с изображения, т.е. если эти поля начинаются с <img ....." , то, для каждого такого поста сделать следующее:

а) cкопировать адрес изображение, т.е. значение аттрибута img src(должен начинаться с "http....и закончится " - изображение в этих 2 полях одинаковое, т.е. этот аттрибут src одинаковый) ;

b) скопировать id этого поста - содержание поля 'ID';

c) удалить и обоих полях этот самый тег <img целиком - т.е. от <img... до закрывающего тега >. но важно удалить только первый тег;

2. Найти в таблице wp_post вхождение точно соотвующее значению аттрибута img src из п. 1а) выше, где поле post_type имеет значение "attachment", и для этого поста:

а) скопировать id этого поста - содержание поля 'ID';

3. Создать новую запись в таблице wp_postmeta, в котором присвоить значения полям:

а) полю meta_id - оставить дефолтное, должно присвоиться сл. по инкременту;

b) полю post_id - значение поля "ID" из п. 1b);

c) полю meta_value - значение поля "ID" из п. 2а);

d) полю meta_key - присвоить значение '_thumbnail_id'

Ясно что задачу эту за меня никто не решит, но может кто алгоритм накинет, как ее легче решить.
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Aricus
На mysql подобное сделать сложно, если вообще возможно. Я бы на PHP делал, на отдельной странице, даже без подключения WP. Например, извлекаете из БД посты, начинающиеся с <img . Далее в PHP в цикле делаете то, что нужно, и изменяете посты запросом. Обязательно перед этим сделайте резервную копию, так как пойти не так может очень многое.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы