WordPress как на ладони

[РЕШЕНО] Заблокировать «?attachment_id=» redirect

по таким ссылкам можно спокойно парсить или нагружать или перебирать сайт на вложения
Как заблокировать такие адреса ??
пока подкрутил htaccess - но это плохой вариант для предпросмотра с user admin

RewriteEngine On
RewriteCond %{QUERY_STRING} attachment_id
RewriteRule ^.*$ https://site.com/? [R=301,L]

решил через код от плагина и немного подправил
WP 5.3.2, PHP 7+

/**
 * Handles redirection.
 */
function sar_attachment_redirect() {
	$attachment_id_name = $_GET['attachment_id'];
	global $post;   
	if ( is_attachment() && isset($attachment_id_name) && isset( $post->post_parent ) && is_numeric( $post->post_parent ) && ( 0 !== $post->post_parent ) ) {

		$parent_post_in_trash = get_post_status( $post->post_parent ) === 'trash' ? true : false;

		if ( $parent_post_in_trash ) {
			wp_die( 'Page not found.', '404 - Page not found', 404 ); // Prevent endless redirection loop in old WP releases and redirecting to trashed posts if an attachment page is visited when parent post is in trash.
		}

		wp_safe_redirect( get_permalink( $post->post_parent ) ); // Redirect to post/page from where attachment was uploaded.
		exit;

	} elseif ( is_attachment() && isset( $post->post_parent ) && is_numeric( $post->post_parent ) && ( $post->post_parent < 1 ) ) {

		wp_safe_redirect( get_bloginfo( 'wpurl' ) ); // Redirect to home for attachments not associated to any post/page.
		exit;

	}
}

add_action( 'template_redirect', 'sar_attachment_redirect', 1 );
0
kolshix
4.1 год назад 779
  • 0
    mi1385 solosofii.com

    Попробуй attachment-pages-redirect

    Комментировать
  • 0

    используйте хук attachment_link

    в пользовательскую функцию передаются два параметра - url вложения и id вложения.

    Ссылка на страницу вложения будет заменена результатом выполнения функции. Это может что угодно, хоть ссылка на главную, хоть url вложенного медиафайла (в примере по ссылке именно так), хоть вообще ничего.

    kolshix 4 года назад

    на удивление , код не сработал и показал неожиданны результат, если раньше срабатывал редирект со страниц с "attachment_id" на стандартный ЧПУ , то теперь пользователь остается на странице "attachment_id" ещё и правильное вложение открывается, хотя в условии стояла домашняя страница .

    Сейчас перезжаю потихоньку на php 7.4 + WP последнюю - - там посмотрю.

    Andrew 4 года назад

    где-то допущена ошибка при вызове функции. Проверьте в медиабиблиотеке, какие ссылки отображаются там, на слове "Перейти"

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация