@konchychp
fullstack developer; founder of IT solution

Как правильно написать аналогичный хук wordpress?

Добрый вечер. У меня нет опыта в работе с вордпресс. Вот прям вообще нет никакого опыта.
Есть уже написанный Middleware на Laravel 8 - Скажите , как правильно написать hook для WordPress что бы заглушку он возвращал на все страницы сайта с тем же URL-ом что и запрос для всех кроме поисковых роботов с кодом ответа 200

public function handle(Request $request, Closure $next)
    {
        $referer = request()->headers->get('referer');
        $baseUrl = request()->headers->get('host');
        $ip = request()->ip();
        if (
            (new Agent)->robot() == 'Yandex' or(new Agent)->robot() == 'Ya'
            or $request->input('turbo') == 'true'
            or $referer == "https://yandex.ru/turbo/$baseUrl/s/"
            or $ip == '127.0.0.1') {

            return $next($request);
        }

        return response()->view('layouts.zaglushka');
    }
  • Вопрос задан
  • 89 просмотров
Решения вопроса 1
@konchychp Автор вопроса
fullstack developer; founder of IT solution
Ну кому может быть интересно мое решение (подозреваю что это костыль конечно) -> но я писал что в wordpress я ничего не понимаю - так что вот пожалуста!

1. Function.php -> активной темы

function redirect_st(){
if( strstr(strtolower($_SERVER['REQUEST_URI']), "/visit-zerkalo")){
        $detect = new Mobile_Detect;
        if ( $detect->isMobile() or $detect->isTablet()) {
            header("Location: example.com", TRUE, 301);
        }
        else {
            require get_template_directory() .'/zaglushka.php'; die;
        }
}
else {
    return true;
}
}
function redirect_zaglushka(){ 

if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "yandex") 
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "googlebot")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "bingbot")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "duckduckbot")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "slurp")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "ia_archiver")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "facebot")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "facebookexternalhit")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "konqueror")
    or strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "exabot")){
    return true;
}
else { 
    require get_template_directory() .'/zaglushka.php'; die;
}
}
add_action('redirect_hook' , 'redirect_st');
do_action('redirect_hook');
// привяжем функцию к хуку
add_action( 'my_hook', 'redirect_zaglushka' );
// выполним хук
do_action('my_hook');

2. wp-load.php -> absolute path

require_once ABSPATH . 'Mobile_Detect.php';
3. файл заглушки добавляем в корень темы активной

4. на всякий случай я так же поключил файл класса Mobile_Detect.php в корневой индекс
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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