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

自定义文章类型短码分页异常:每页返回相同内容

短码分页内容重复问题的解决方法

你的分页功能显示正常但内容重复,核心问题出在WP_Query的参数设置和内容拼接逻辑上,以下是具体修复步骤:

问题排查与修复点

1. paged参数错误设置

你在$args里给paged赋值了带HTML标签的字符串,这会导致WP_Query无法正确识别页码,始终返回第一页内容:

'paged' => '<li>'.( get_query_var('paged') ? get_query_var('paged') : 1).'</li>'

修复:直接传递页码数值,去掉多余的HTML标签:

'paged' => get_query_var('paged') ? get_query_var('paged') : 1

2. 错误的状态参数publish_status

WP_Query中没有publish_status这个参数,正确的参数是post_status,值为'publish':

'post_status' => 'publish'

3. 内容拼接逻辑错误

循环里你用$result = 'fetching some stuff';每次都会覆盖之前的内容,应该用.=来累加内容,并且要先初始化$result为空字符串,避免未定义的问题。

4. 完整修复后的代码

function shortcode_paginated_list() {
    // 初始化结果变量
    $result = '';

    $args = array(
        'post_type'      => 'my_custom_post_type',
        'posts_per_page' => 2, // 直接用数字更规范
        'post_status'    => 'publish',
        'paged'          => get_query_var('paged') ? get_query_var('paged') : 1
    );

    $wp_query = new WP_Query($args);

    if($wp_query->have_posts()) :
        while($wp_query->have_posts()) : $wp_query->the_post();
            // 累加内容,替换成你实际的内容获取逻辑
            $result .= '<div class="post-item">';
            $result .= '<h3>' . get_the_title() . '</h3>';
            $result .= '<p>' . get_the_excerpt() . '</p>';
            $result .= '</div>';
        endwhile;
    else :
        // 没有内容时的提示
        $result .= '<p>暂无内容</p>';
    endif;

    $big = 999999999;
    $paginate = paginate_links( array(
        'base'      => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format'    => '?paged=%#%',
        'prev_text' => __('&lt;i class="fas fa-angle-left"&gt;&lt;/i&gt;'),
        'next_text' => __('&lt;i class="fas fa-angle-right"&gt;&lt;/i&gt;'),
        'current'   => max( 1, get_query_var('paged') ),
        'total'     => $wp_query->max_num_pages,
        'type'      => 'list'
    ) );

    if ( $paginate ) {
        $result .= '<div class="blog-nav">' . str_replace( "<ul class='page-numbers'>", '<ul class="pagination">', $paginate ) . '</div>';
    }

    wp_reset_postdata();
    return $result;            
}
add_shortcode( 'paginated-list', 'shortcode_paginated_list' );

额外说明

  • 确保你的自定义文章类型my_custom_post_type确实存在,并且有足够多的已发布内容来触发分页。
  • 内容部分替换成你实际需要展示的字段,比如标题、内容、自定义字段等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:30:48