Как перенаправить с одной страницы на другую с изменением wp-запроса и без перезагрузки страницы? - PullRequest
0 голосов
/ 29 мая 2019

Проблема

Есть URL: https://example.com/my-category/category

Нужно создать еще один https://example.com/shop

Поведение для достижения:

Посещая содержимое https://example.com/shop и все переменные запроса должны совпадать, как для https://example.com/my-category/category

https://example.com/my-category/category и https://example.com/shop - должны быть одинаковыми. Мета-теги, заголовок и другой контент должны быть идентичны.

Необходимо создать внутренний редирект

с https://example.com/shop

до https://example.com/my-category/category без перезагрузки страницы.

Это фрагмент кода, который я пробовал

flush_rewrite_rules(); add_rewrite_rule( '/shop?$', 'index.php?product_cat=my-category', 'top' );

Я ожидаю увидеть одну и ту же страницу для этих двух URL

https://example.com/my-category/category а также https://example.com/shop

Второй должен быть перенаправлен на первый.

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Самый простой способ добиться этого - отредактировать файл .htaccess (на вашем сервере в корневой папке для http://example.com) и добавить 301 Redirect следующим образом:

Redirect 301 /shop /my-category/category

Это означает, что когда кто-то вводит http://www.example.com/shop в браузер, он автоматически перенаправляется на http://www.example.com/my-category/category, и последняя страница загружается.

0 голосов
/ 29 мая 2019

Я нашел решение через request фильтр

function example_rewrite_request($query){
    $request_uri = urldecode( $_SERVER['REQUEST_URI'] );

    $parsed_url = parse_url( $request_uri );

    if (  preg_match( '/^\/shop/', $parsed_url['path'] ) ) {
        $query['product_cat'] = 'my-category';
        unset( $query['post_type'] );

        return $query;
    }

    return $query; 
}

add_filter( 'request', 'example_rewrite_request', 9999, 1 );

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...