Предотвращение автоматического перенаправления URL-адреса в WordPress - PullRequest
0 голосов
/ 07 июня 2019

У меня установлен WordPress 5.1 и структура постоянных ссылок включена . Поэтому ссылки имеют такую ​​структуру: http://example.com/taxonomy_name/term-slug

Тем не менее, я создал пользовательский paginator, который имеет ссылки вроде: http://example.com/taxonomy_name/?order=ASC&orderby=title&taxonomy_2=term-slug, и он отлично работает. Поэтому, когда я нажимаю этот URL, он остается неизменным.

Но если у него есть аргумент страницы, подобный следующему: http://example.com/taxonomy_name/?order=ASC&orderby=title&taxonomy_2=term-slug&paged=X ( X может быть любым числом) , тогда, когда я нажимаю этот URL, он автоматически перенаправляет меня на: http://example.com/taxonomy_name/page/X/?order=ASC&orderby=title&taxonomy_2=term-slug

Как предотвратить только это перенаправление paginator?

1 Ответ

0 голосов
/ 09 июня 2019

Я решил эту проблему, создав фильтр для встроенных в WP правил канонического перенаправления.

Это функция фильтра:

function disable_paged_canonical_redirect($redirect_url, $requested_url){
    // Retrieve paged var from $_GET request
    $page_num = (int)filter_input(INPUT_GET, 'paged');
    // Check if there is a canonical '/page/X' part in the URL.
    $canonical_paged = preg_match('/\/page\/[0-9]+/i', $redirect_url);
    // If paged var is in GET vars and WP created canonical redirect for it, then revert this change.
    if( $canonical_paged && $page_num ){
        // Remove page part from canonical URL
        $redirect_url = preg_replace('/\/page\/[0-9]+/i','', $redirect_url);
        // Add paged var to URL arguments
        $redirect_url .= '&paged='.$page_num;
    }
    return $redirect_url;
}
add_filter('redirect_canonical','disable_paged_canonical_redirect', 10, 2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...