@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'

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

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

Войти через центр авторизации
Похожие вопросы