Накратко за проекта
В голям онлайн магазин, предлагащ масла и автомобилни консумативи, се появи сериозен проблем: десетки изображения, хоствани в /uploads/, бяха изтрити при миграция на съдържание. Резултатът – стотици счупени <img> тагове в страници, продукти и блог постове, влошаващи UX, SEO и цялостното възприятие за качество. Задачата: да се изчисти цялото съдържание от липсващи изображения, без да се използват тежки плъгини, за да се запази производителността.
Ключови подобрения
- Пълно премахване на всички счупени изображения от съдържанието на над 700 страници и продукта, без ръчна намеса.
- Без използване на плъгини: Всичко бе постигнато с
SQLиPHP, което гарантира чист и стабилен код. - Възстановяване на UX и Core Web Vitals чрез намаляване на 404 грешки и ненужно зареждане на липсващи ресурси.
Използвани технологии
- WordPress + WooCommerce – базова структура на сайта и съдържанието.
- MySQL – за директна намеса в базата данни чрез SQL заявки.
- PHP – за обхождане на публикации и динамично премахване на счупени изображения.
Предизвикателства
Най-голямото предизвикателство беше да се открият изображенията, които сочат към несъществуващи файлове, разпръснати из post_content и postmeta, често в сериализирани данни от Elementor и други билдъри. Използването на плъгин като „Better Search Replace“ даде добри dry-run резултати, но за пълна автоматизация и контрол бе нужно програмен подход.
Решение с SQL заявка
Когато имаме известен URL към счупено изображение, можем директно да го премахнем от всички публикации чрез следната SQL заявка:
Тази заявка почиства всички срещания на конкретния линк в съдържанието на публикации, продукти и страници. Повтаря се за всеки счупен линк. Таблицата wp_posts може да има различен префикс в зависимост от инсталацията.
Динамично решение с PHP
За пълна автоматизация, особено когато не знаем точните линкове, разработих скрипт, който обхожда всички публикации и проверява всяко изображение дали връща 404. Ако е така – премахва целия <img> таг.
Стъпки за репродуциране
- Създайте файл
remove-broken-images.phpи поставете горния код. - Качете го в root директорията на сайта или поставете функцията временно в
functions.php. - Заредете го през браузър или админ панела (ако е във functions.php, той ще се изпълни веднъж).
- След почистване, премахнете кода, за да предотвратите повторно изпълнение.
Резултат
Успешно бяха премахнати всички счупени изображения от съдържанието, без използване на външни плъгини. Сайтът беше забележимо по-бърз, визуално чист и SEO-фрейндли. Времето за ръчна редакция на всяка публикация бе сведено до нула. Подобрихме не само UX, но и crawlability от търсачките, което ще доведе до по-добро класиране в SERP.
Извод
Поддръжката на WordPress сайт на високо ниво не винаги означава инсталиране на още плъгини. Понякога, чист SQL и малко PHP вършат работа по-бързо, по-чисто и по-ефективно. С този подход постигнахме максимален резултат с минимален код – което е същината на добрата разработка.