Как удалить или полностью отключить страницы вложений?
Я бы хотел полностью отключить все страницы вложений.
Пробовал гуглить, но там только информация о том, как перенаправить на родительский пост. Это как-то не элегантно. Зачем иметь ненужную ссылку, которая перенаправляет на родительскую страницу? Нельзя ли её полностью отключить, чтобы 404 страницу выдавала, как будто такой страницы вообще нет?
Используй такой хук. Он удаляет правила ЧПУ связанные со страницами вложений. После вставки кода, например, в файл functions.php нужно сбросить правила ЧПУ. Для этого нужно просто зайти в Настройки > Постоянные ссылки.
## Удаляет ЧПУ связанные со страницами вложений add_filter( 'rewrite_rules_array', 'remove_attachment_rewrite_rules' ); function remove_attachment_rewrite_rules( $rules ) { foreach( $rules as $regex => $query ){ if( strpos( $regex, 'attachment' ) || strpos( $query, 'attachment' ) ) unset( $rules[ $regex ] ); } return $rules; }Может будет полезно - у меня сайт галерея - и для вложений создан файл image.php
есть 2 типа вложений, с прикреплением вложения к посту и без.
Вот код, тут можете подкрутить чтоб для всех вложений была 404 ошибка.
Сейчас настроено так чтоб только авторизированные пользователи видели все вложения, а не авторизированные видели только картинки, которые прикреплены к постам.
Можете оставить доступ только для админа , а остальным 404
add_action( 'template_redirect', 'sitecare_redirect_unattached_images' ); /** * Redirects the attachment page for any image which has not been attached to a * post, page, or custom post type to the current site's home URL. * * @since 0.1.0 * @uses is_attachment() * @uses get_queried_object() * @return void */ function sitecare_redirect_unattached_images() { $login=0; if ( is_user_logged_in() ) { $login = 1 ; } if ( ! is_attachment() || $login == 1) { return; } $parent = get_queried_object()->post_parent; if ( ! empty( $parent ) ) { return; } if ( $login == 0 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); return true; // для обрыва хука exit; } } // для вас можно так function sitecare_redirect_unattached_images() { $login=0; if ( is_user_logged_in() && current_user_can('manage_options') ) { $login = 1 ; } if ( ! is_attachment() || $login == 1) { return; } if ( $login == 0 ) { global $wp_query; $wp_query->set_404(); status_header( 404 ); nocache_headers(); return true; // для обрыва хука exit; } }