阻止WordPress中的自动分页URL重定向

时间:2019-06-07 06:27:05

标签: wordpress pagination

我已安装WordPress 5.1并启用了永久链接结构。 因此,链接具有以下结构:http://example.com/taxonomy_name/term-slug

但是,我创建了一个自定义分页器,该分页器具有类似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

如何防止这种分页器重定向?

1 个答案:

答案 0 :(得分:0)

我已经通过为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);