По умолчанию WordPress использует стандартные URL для страниц медиа-библиотеки, такие как wp-admin/upload.php для списка файлов и wp-admin/post.php?post=ID&action=edit для редактирования вложений. В некоторых случаях возникает необходимость изменить эти URL — например, для улучшения безопасности, создания более дружелюбных ссылок или интеграции с кастомными интерфейсами.
Почему стоит менять URL медиа-библиотеки WordPress
Изменение URL страниц библиотеки медиа может пригодиться в следующих сценариях:
- Повышение безопасности: изменение стандартных URL усложняет задачу злоумышленникам, пытающимся получить доступ к медиа-файлам или административной части.
- Улучшение пользовательского опыта: если вы создаёте собственный UI для управления медиа, кастомные URL помогут интегрировать его с другими разделами сайта.
- Оптимизация SEO и удобства навигации: можно сделать ссылки более понятными и запоминающимися.
Однако важно помнить, что медиа-библиотека тесно связана с ядром WordPress, и изменения URL требуют аккуратного подхода, чтобы не сломать функционал.
Как изменить URL страниц библиотеки медиа с помощью хуков WordPress
WordPress позволяет изменять поведение URL через фильтры и хуки. Для изменения URL медиа-библиотеки нам нужно переопределить ссылки в административном меню и обработать перенаправления.
Шаг 1. Изменение ссылок в меню админки
Используем хук admin_menu с функцией remove_menu_page и add_menu_page для замены стандартной страницы «Медиафайлы» на новую с кастомным URL.
function wpkey_change_media_menu_url() {
// Удаляем стандартный пункт меню "Медиафайлы"
remove_menu_page('upload.php');
// Добавляем пункт с новым слагом
add_menu_page(
'Медиафайлы', // Заголовок страницы
'Медиафайлы', // Название в меню
'upload_files', // Возможность
'wpkey-media-library', // Новый слаг
'wpkey_render_custom_media_page', // Функция вывода
'dashicons-media-document', // Иконка
10
);
}
add_action('admin_menu', 'wpkey_change_media_menu_url');
Функция wpkey_render_custom_media_page будет отвечать за вывод содержимого страницы медиа-библиотеки.
Шаг 2. Вывод стандартной медиа-библиотеки на новой странице
Для вывода стандартной библиотеки можно использовать функцию wp_media_upload_form() или подключить стандартные скрипты и шаблоны. Но проще — сделать редирект на оригинальную страницу внутри нашей функции:
function wpkey_render_custom_media_page() {
wp_redirect(admin_url('upload.php'));
exit;
}
Однако такой подход возвращает нас к исходным URL, что не решает задачу переопределения URL. Более продвинутый способ — использовать add_rewrite_rule и создавать собственные маршруты.
Использование add_rewrite_rule для создания пользовательских URL медиа
Можно добавить правило перезаписи URL, чтобы обрабатывать запросы к пользовательским URL и отдавать содержимое медиа-библиотеки.
function wpkey_custom_media_rewrite_rule() {
add_rewrite_rule('^my-media-library/?$', 'wp-admin/upload.php', 'top');
}
add_action('init', 'wpkey_custom_media_rewrite_rule');
После добавления правила нужно обновить настройки постоянных ссылок в админке (Настройки > Постоянные ссылки), чтобы правило вступило в силу.
Теперь при переходе на https://example.com/my-media-library вы попадёте на стандартную страницу медиа-библиотеки. Но главное — URL изменён.
Как изменить URL отдельных медиа-вложений (attachment pages)
Страницы вложений (attachment pages) имеют URL вида https://example.com/attachment-slug/. Чтобы изменить структуру этих URL, можно использовать фильтр post_type_link.
function wpkey_custom_attachment_link($link, $post) {
if ($post->post_type === 'attachment') {
$slug = 'media-file'; // Новый сегмент URL
$link = home_url('/' . $slug . '/' . $post->post_name . '/');
}
return $link;
}
add_filter('post_type_link', 'wpkey_custom_attachment_link', 10, 2);
Кроме того, нужно добавить правило перезаписи для новых URL страниц вложений:
function wpkey_custom_attachment_rewrite() {
add_rewrite_rule('^media-file/([^/]+)/?$', 'index.php?attachment=$matches[1]', 'top');
}
add_action('init', 'wpkey_custom_attachment_rewrite');
Не забудьте обновить постоянные ссылки для активации новых правил.
Плагины для управления URL медиа и безопасности
Если вы не хотите писать код вручную, есть несколько плагинов, которые могут помочь:
- Clearfy Pro — оптимизация и безопасность, в том числе управление URL и доступом к медиа.
- WPRemark — модификация поведения сайта, включая работу с URL.
Эти инструменты позволяют гибко управлять URL без ручного кода.
Выводы и рекомендации
Изменение URL страниц медиа-библиотеки WordPress — задача нетривиальная, требующая понимания работы административного интерфейса и системы перезаписи URL. Рекомендуется:
- Использовать
add_rewrite_ruleдля создания пользовательских маршрутов. - Использовать фильтр
post_type_linkдля изменения URL вложений. - Обновлять настройки постоянных ссылок после изменений.
- Проверять совместимость с плагинами и темами.
- Рассматривать использование готовых плагинов для упрощения задачи.
Такой подход позволит вам получить красивые и удобные URL для медиа и повысить безопасность вашего сайта.