hitakiri
@hitakiri

Как перехватить get запрос в wordpress?

При отрисовке страницы происходит несколько get запросов на подгрузку изображений.

GET: mysite.loc/cat/page1.html
GET: mysite.loc/cat/images/img1.jpg
GET: mysite.loc/cat/images/img2.jpg
...


Раньше, наличие запросов на изображение определялось просто - через apache mod_rewrite. При определении запроса на изображение запускался скрипт подменяющий заголовки на нужные. Т.е. в .htaccess стояло правило:

RewriteRule ^([a-zA-z0-9]+)/(.*\.(jpg|jpeg|png|gif))$ /mysript.php?imgpath=$1/$2 [NC,L]


Переписывая скрипт как плагин для WP, столкнулся с проблемой того, что движок ничего не хранит в глобальном $_GET. По сути, само точное значение imgpath меня не интересует, а необходимо знать о его существовании(либо отсутствии), дабы подставить заголовки в нужный момент.

Пробовал использовать встроенную в wp api функцию add_rewrite_tag(), но она не помогла т.к. отрабатывает на уровне первого запроса.
  • Вопрос задан
  • 1537 просмотров
Пригласить эксперта
Ответы на вопрос 2
pingo
@pingo
может воткнуть
@file_put_contents('log_get.tmp', $_GET['image'],  FILE_APPEND);
и уже смотреть в файле log_get.tmp
Ответ написан
dimasmagadan
@dimasmagadan
на мой взгляд, вы делаете подгрузку неправильно.
но, как вариант, реализовать вашу задачу можно так

добавьте endpint
add_rewrite_endpoint( 'imgpath', EP_ALL );
https://codex.wordpress.org/Rewrite_API/add_rewrit...

в functions.php добавьте вот такое
function prefix_output() {
	switch (get_query_var( 'imgpath' )) {
// тут делаем что нужно с пойманной переменной
		default:
			break;
	}
	remove_action( 'template_redirect', 'prefix_output' );
 	exit; 
}

function prefix_custom_get_vars(){
	global $wp_query;

    if( !in_array($wp_query->get( 'imgpath' ), array('разрешенные значения' ) ) && !is_admin() ) {
        return;
    }
	add_action( 'template_redirect', 'prefix_output' );
}
add_action( 'pre_get_posts', 'prefix_custom_get_vars' );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы