Elementor Widget Posts Pagination Link causing “too many redirect” Error

问题描述

目前使用 Elementor Pro 3.1.0

WordPress 使用 Elementor 编辑器编辑页面,于页面中插入“文章”这个小工具并开启页码选项,小工具产生的页码连结,于预览时连结正常,但于发布的网页,点击会造成浏览器 ERR_TOO_MANY_REDIRECTS 错误,以致不能造访第二页之后的页面

ERR_TOO_MANY_REDIRECTS 错误

新增 Elementor Posts Widget

Elementor posts widget

开启页码选项

开启页码选项

在 Elementor 预览的模式中是正常的,在分类的模板中也是正常可运行的,而在页面中产生分类列表分页连结就有这问题,我不确定是不是Bug,Posts Widget 所产生的网址结构如下:此连结会造成浏览器抛出 ERR_TOO_MANY_REDIRECTS 错误

https://example.com/news/2/

奇怪的是,我把网址最后一个斜线移除,就可以正常浏览文章第二页了,如下:

https://example.com/news/2

所以依我判断,可能是网址 rewrite 有问题,但详细还是要等 Elementor 释出新版本

修正此错误

由于此错误会造成网站流程中断,所以必须暂时修复这错误,依照上方特征,理论上移除网址最后一个斜线便可以正常浏览,以这方向去实作解决方案

PHP

原本希望于 PHP 中解决这问题,但 Elementor Posts Widget 中的分页,并不是 WordPress 核心的分页功能,是使用Elementor 的分页功能,所以无法用 WordPress API Hook 去解决,也查了 Elementor Posts Widget 原始码也并没有任何的 Hook 可以去编辑页码连结,所以无法用 PHP 去修改网址

JavaScript

PHP无法修改,没办法,我们就得用 JavaScript 来修改分页网址,透过下方的 Javascript 就可以把网址最后一个斜线移除,把下方代码放置于启动主题中 functions.php 文件中

/**
 * Elementor Widget Posts Pagination Link causing "too many redirect" error
 * 
 * @author v123.tw
 * @link https://v123.tw/elementor-widget-posts-pagination-link-causing-too-many-redirect-error/
 *
 * @return void
 */
function v123_fix_elementor_pagination_link():void
{ 
    ?> 
    <script> 
    jQuery('.elementor-pagination').find('a').each(function() { 
        var url=jQuery(this).attr('href'); 
        var lastChar = url.substr(url.length - 1);
        if(lastChar=='/'){
            url = url.slice(0,-1)
        }
        jQuery(this).attr('href',url); 
    });
    </script> 
    <?php 
}
add_action('wp_footer', 'v123_fix_elementor_pagination_link');

https://wordpress.org/support/topic/elementor-pagination-not-working-2/
https://www.reddit.com/r/elementor/comments/i8hyw4/post_widget_pagination_issue/g2e070u?utm_source=share&utm_medium=web2x&context=3
https://github.com/elementor/elementor/issues/12126#issuecomment-677687590

发布留言

发布留言必须填写的电子邮件地址不会公开。 必填栏位标示为 *

这个网站采用 Akismet 服务减少垃圾留言。进一步了解 Akismet 如何处理网站访客的留言资料