You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Divi自定义文章类型分页链接中的?et_blog参数?

解决方案:DIVI主题自定义文章类型分类归档分页修复

一、先重置固定链接规则

  • 进入WP后台 → 设置 → 固定链接,临时切换为其他格式保存,再换回你当前使用的格式(比如/%postname%/)。这一步会刷新WordPress的重写规则库,是解决分页404问题的基础操作。

二、添加自定义重写规则与查询调整

在子主题的functions.php(优先使用子主题,避免主题更新丢失代码)中插入以下代码:

// 为自定义文章类型的分类归档添加分页重写规则
function custom_cpt_category_pagination_rewrite() {
    // 替换为你的自定义文章类型slug,比如'recipe', 'articles'
    $cpts = array('recipe', 'articles');
    
    foreach ($cpts as $cpt) {
        add_rewrite_rule(
            '^' . $cpt . '/([^/]+)/page/(\d+)/?$',
            'index.php?post_type=' . $cpt . '&category_name=$matches[1]&paged=$matches[2]',
            'top'
        );
    }
}
add_action('init', 'custom_cpt_category_pagination_rewrite');

// 修正DIVI对自定义文章类型归档的查询逻辑
function fix_cpt_pagination_query_vars($query) {
    if (!is_admin() && $query->is_main_query() && (is_category() || is_tax())) {
        $cpts = array('recipe', 'articles');
        foreach ($cpts as $cpt) {
            if (get_post_type() === $cpt) {
                $query->set('post_type', $cpt);
                // 自动移除?et_blog参数并跳转
                if (isset($_GET['et_blog'])) {
                    wp_redirect(remove_query_arg('et_blog', $_SERVER['REQUEST_URI']));
                    exit;
                }
                break;
            }
        }
    }
    return $query;
}
add_action('pre_get_posts', 'fix_cpt_pagination_query_vars');

代码说明:

  • 第一段代码为每个自定义文章类型的分类归档创建post_type/category/page/2/格式的重写规则,让WordPress能正确解析分页URL。
  • 第二段代码在主查询阶段强制加载对应自定义文章类型的内容,同时自动清理?et_blog参数(这个参数是DIVI强制加载博客模板时自动添加的)。

添加代码后必须再次刷新固定链接规则(重复步骤一的操作),否则新规则不会生效。

三、替换DIVI构建器中的分页模块(优化自定义短码)

如果你之前用自定义短码实现分页,用以下代码替换原有短码函数,保证生成的URL符合预期格式:

// 自定义非AJAX分页短码,适配自定义文章类型分类归档
function custom_cpt_pagination_shortcode() {
    global $wp_query;
    
    if (!is_archive()) return;
    
    $big = 999999999; // 用于避免分页链接冲突
    $pagination = paginate_links(array(
        'base' => str_replace($big, '%#%', esc_url(get_pagenum_link($big))),
        'format' => 'page/%#%/',
        'current' => max(1, get_query_var('paged')),
        'total' => $wp_query->max_num_pages,
        'type' => 'list',
        'prev_text' => __('上一页'),
        'next_text' => __('下一页')
    ));
    
    // 清理分页链接中可能存在的?et_blog参数
    $pagination = str_replace('?et_blog', '', $pagination);
    
    return $pagination;
}
add_shortcode('custom_cpt_pagination', 'custom_cpt_pagination_shortcode');

在DIVI构建器中插入「代码模块」,调用[custom_cpt_pagination]短码即可生成符合要求的分页链接。

四、排查DIVI归档模板设置

  • 进入DIVI → 主题定制 → 归档页面,确保自定义文章类型的分类归档选择「自定义布局」,而非默认的博客布局,避免DIVI强制加载博客模板触发?et_blog参数。
  • 如果使用了DIVI自定义模板,检查模板的查询源是否设置为对应自定义文章类型的分类内容。

内容的提问来源于stack exchange,提问作者WP Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 14:15:41