В WordPress по умолчанию URL загруженных изображений формируется автоматически и часто содержит дату загрузки, что не всегда удобно для SEO и управления файлами. В этой статье мы разберём, как изменить URL изображений без использования плагинов, чтобы сделать ссылки более читабельными, удобными и SEO-дружественными.
Почему стоит изменить URL изображений в WordPress
Стандартный путь к изображениям в WordPress обычно выглядит так: https://example.com/wp-content/uploads/2024/06/image.jpg. Здесь присутствует структура папок по годам и месяцам, что не всегда нужно и может усложнять управление файлами на сервере.
Изменение URL изображений помогает:
- Сделать ссылку более понятной и короткой для пользователей.
- Упростить миграцию и резервное копирование файлов.
- Улучшить SEO за счёт включения ключевых слов в URL.
- Избежать проблем с путями при смене темы или структуры сайта.
Как отключить разбивку по папкам с датами в WordPress
По умолчанию WordPress сохраняет загруженные медиафайлы в папки по годам и месяцам. Чтобы отключить это поведение, достаточно изменить настройки в админке или добавить функцию в файл functions.php вашей темы.
Отключение через админку
Перейдите в Настройки > Медиафайлы и снимите галочку с пункта «Организовывать мои загруженные файлы по папкам с датами». После этого все новые загруженные файлы будут сохраняться напрямую в папку uploads.
Отключение через код
Если по каким-то причинам нет доступа к интерфейсу, добавьте в functions.php следующий код:
function wpteam_disable_upload_date_folders( $uploads ) {
$uploads['subdir'] = '';
$uploads['path'] = str_replace( $uploads['subdir'], '', $uploads['path'] );
$uploads['url'] = str_replace( $uploads['subdir'], '', $uploads['url'] );
return $uploads;
}
add_filter( 'upload_dir', 'wpteam_disable_upload_date_folders' );Этот код убирает подкаталоги с датами из пути загрузки.
Как изменить базовый URL для загрузок
Иногда требуется не просто убрать папки с датами, а изменить базовый URL папки uploads, например, чтобы использовать CDN или другой домен.
Изменение URL через фильтр upload_dir
Фильтр upload_dir позволяет программно изменить параметры загрузки:
function wpteam_change_upload_base_url( $uploads ) {
// Новый базовый URL для медиафайлов
$uploads['baseurl'] = 'https://cdn.example.com/wp-content/uploads';
// Путь на сервере можно не менять, если CDN проксирует папку uploads
// $uploads['basedir'] = '/var/www/html/wp-content/uploads';
return $uploads;
}
add_filter( 'upload_dir', 'wpteam_change_upload_base_url' );Так вы можете указать любой URL, например, подставить CDN или другой домен, где будут храниться изображения.
Как массово изменить URL уже загруженных изображений в базе данных
Если изображения уже загружены и их URL содержат старую структуру, можно заменить их адреса в базе данных с помощью SQL-запроса или PHP-кода.
Пример SQL-запроса для замены URL в контенте постов
Выполните запрос в phpMyAdmin или через консоль MySQL (сделайте резервную копию базы перед этим!):
UPDATE wp_posts
SET post_content = REPLACE(
post_content,
'https://example.com/wp-content/uploads/2024/06/',
'https://example.com/wp-content/uploads/'
)
WHERE post_content LIKE '%https://example.com/wp-content/uploads/2024/06/%';Этот запрос заменит ссылки на изображения в содержимом записей.
Использование PHP-скрипта для замены URL в метаданных
Медиафайлы хранятся и в postmeta, например, в полях _wp_attached_file. Для обновления можно использовать следующий код:
function wpteam_update_attachment_urls() {
global $wpdb;
$old_path = '2024/06/';
$new_path = '';
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta}
SET meta_value = REPLACE(meta_value, %s, %s)
WHERE meta_key = '_wp_attached_file' AND meta_value LIKE %s",
$old_path, $new_path, '%' . $wpdb->esc_like($old_path) . '%'
)
);
}
// Запустите функцию один раз, затем удалите вызов
wpteam_update_attachment_urls();Этот скрипт удалит часть пути с датой из метаданных вложений.
SEO и безопасность при изменении URL изображений
После изменения URL важно не потерять трафик и избежать ошибок 404. Для этого:
- Настройте 301 редиректы со старых URL на новые, например через .htaccess:
RewriteEngine On
RewriteRule ^wp-content/uploads/([0-9]{4})/([0-9]{2})/(.*)$ /wp-content/uploads/$3 [R=301,L]- Проверьте, что все ссылки в базе данных обновлены.
- Убедитесь, что права доступа к новым папкам корректны.
- Проверьте работу сайта на предмет сломанных изображений.
- Добавьте новые URL в sitemap и проиндексируйте их в поисковых системах.
Заключение
Изменение URL изображений в WordPress без плагинов — вполне решаемая задача, если правильно использовать настройки и фильтры платформы. Это поможет сделать структуру файлов более удобной и улучшить SEO. Важна аккуратность: не забудьте обновить ссылки в базе и настроить редиректы, чтобы избежать потери трафика.
Если хотите автоматизировать SEO-оптимизацию и очистку кода, обратите внимание на плагин Clearfy Pro, который помогает управлять URL и оптимизировать сайт без лишнего кода.