当前位置: 首页 > 知识库问答 >
问题:

Wordpress分页不工作

鞠宏恺
2023-03-14

我尝试了多种解决方案,但都不起作用。

当我转到/page/2时,它不起作用。

我正在index.php我的主题执行自定义查询。

if ( get_query_var('paged') ) {
    $paged = get_query_var('paged');
} elseif ( get_query_var('page') ) {
    $paged = get_query_var('page');
} else {
    $paged = 1;
}

$args = array(
    'post_type' => array('post', 'music', 'videos'),
    'post_status' => 'publish',
    //'meta_key' => 'featured',
    //'meta_value' => '1',
    'posts_per_page' => 10,
    'orderby'=>'date',
    'order'=>'DESC',
    'paged' => $paged
);

query_posts($args);

这是我的网站链接:我的网站主页

此页面不工作(404)-页面不工作(格式为-mywebsite/page/2/)

刚刚意识到这一页2作品-正在工作的页面(的格式-mywebsite.com/?page=2)

共有3个答案

邴越彬
2023-03-14

我已经为这个问题挣扎了一段时间,结果发现我们的WordPress没有为我设置一个必填字段,max\u num\u pages

所以我在循环中设置了这个变量。这是我的示例代码。

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
$args = array('post_type' => 'cpt', 'paged'=>$paged, 'posts_per_page' => 3);
$loop = new WP_Query($args);
$GLOBALS['wp_query']->max_num_pages = $loop->max_num_pages; // This is the line that did the magic for me.

进一步阅读后,我发现了这一点;

  1. 在single.php、singular.php和其他单一视图模板上:(int)$page是帖子的页面,由查询var页面指定:get_query_var('page')
  2. 在各种archive.php和类似的存档/帖子类型列表视图模板上:(int)$pated是全局变量包含帖子列表的页码(如存档)。

这意味着,如果您使用的是页面模板(即单个视图模板)并且正在使用循环,则需要设置此变量。

杨乐意
2023-03-14

我有时也很难让分页正确工作。尝试使用下面的查询,看看是否有帮助。我只添加了一行代码,并将您的查询更改为不使用$args变量。

<?php

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

query_posts( array(
    'post_type' => array(
        'post',
        'music',
        'videos',
    ),
    'post_status' => 'publish',,
    'posts_per_page' => 10,
    'orderby'=>'date',
    'order'=>'DESC',
    'paged' => $paged )
);

if (have_posts()) : while (have_posts()) : the_post();

?> 

    // Display your content here    

    <?php the_title ?>

    <?php the_content(); ?>

<?php endwhile; endif; ?>
郤瀚
2023-03-14

我也有同样的问题,这为我解决了所有问题。这允许我在索引上分页。php以及我的页面。php具有相当的永久链接。

超文本标记语言/PHP:

<?php
    //Fix homepage pagination
    if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } else if ( get_query_var('page') ) {$paged = get_query_var('page'); } else {$paged = 1; }

    $temp = $wp_query;  // re-sets query
    $wp_query = null;   // re-sets query
    $args = array( 'post_type' => array('post', 'music', 'videos'), 'orderby'=>'date', 'order'=>'DESC', 'posts_per_page' => 10, 'paged' => $paged);
    $wp_query = new WP_Query();
    $wp_query->query( $args );
    while ($wp_query->have_posts()) : $wp_query->the_post(); 
?>

<!--your loop stuff here -->

<?php endwhile; ?>
<nav>
   <?php paginate(); ?>
   $wp_query = null;
   $wp_query = $temp; // Reset
</nav>

这允许做几件事。一个是检查你的账户是在主页上、页面上还是单身,然后告诉$paged变量如何依次做出反应。它还允许您使用自定义文章类型查询分页。另外,通过不使用query_post,您可以避免使用它时有时会遇到的一些非常时髦的东西。页码();是我们现在引入的自定义函数:

在你的功能里面。php

function paginate() {
global $wp_query, $wp_rewrite;
$wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

$pagination = array(
    'base' => @add_query_arg('page','%#%'),
    'format' => '',
    'total' => $wp_query->max_num_pages,
    'current' => $current,
    'show_all' => true,
    'type' => 'list',
    'next_text' => '&raquo;',
    'prev_text' => '&laquo;'
    );

if( $wp_rewrite->using_permalinks() )
    $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 'page', get_pagenum_link( 1 ) ) ) . '?page=%#%/', 'paged' );

if( !empty($wp_query->query_vars['s']) )
    $pagination['add_args'] = array( 's' => get_query_var( 's' ) );

echo paginate_links( $pagination );
}

这最初来自http://bavotasan.com/2011/simple-pagination-for-wordpress/我稍微修改了一下,让页面在主页上工作。

这同样可以做几件事。它为你的页面分页,每个页面都有自己的链接(我觉得这很好),并且它还重新写入URL以允许非常长的链接。如果您检查该链接,则在部分内容中使用变量“s”代替“paged”。我用“paged”替换了“s”,我这边的一切都很好。

分页的可选样式

ul.page-numbers {
    margin: 20px 0 10px;
    width: 100%;
    padding: 0;
    font-size: 12px;
    line-height: normal;
    clear: both;
    float: left;
}

ul.page-numbers li {
       float: left;
    }

ul.page-numbers a,
ul.page-numbers span {
    border-radius: 3px;
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
    background: -webkit-gradient(linear, left top, left bottom, from(#E4E3E3), to(#FFFFFF));
    background: -moz-linear-gradient(top,  #E4E3E3,  #FFFFFF);
    filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#E4E3E3', endColorstr='#FFFFFF');
    padding: 3px 4px 2px 4px; 
    margin: 2px;
    text-decoration: none;
    border: 1px solid #ccc;
    color: #666;
}

ul.page-numbers a:hover,
ul.page-numbers span.current {  
    border: 1px solid #666;
    color: #444;
}

编辑我后来意识到,在单击其中一个页面选项卡后,主页分页将中断。我通过替换条件语句并将其放在适当的位置来解决这个问题。我也更新了上面的代码。

$pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg( 'page', get_pagenum_link( 1 ) ) ) . '?page=%#%/', 'paged' );
 类似资料:
  • Frontpage分页不起作用:当点击page2/3/4/etc时,它只是重新加载首页,而不显示旧条目。我尝试了几件事情:首先,禁用所有活动插件,以确保没有冲突。第二,尝试在设置中将永久链接更改为默认 我的代码是 谢啦

  • 我还在这个问题上犹豫不决。。 我的WordPress博客上的分页无效-http://www.example.com/news 当你点击不同的页码时,它会正确更新网址(和页面标题),但不会显示不同的帖子。 我试过: 禁用所有插件 更改永久链接结构 更改“设置”中显示的博客文章数 没有什么对我有用。 我见过许多自定义查询的解决方案,但我使用的是您在“设置”中设置的“帖子”页面 在这种情况下,我应该修改

  • 我有两个来自存档的自定义帖子类型。php之一是归档slug。另一个是类别slug。php。分页在归档slug上起作用。php,但在类别slug上的代码相同。php甚至不会显示。我对Wordpress和php有些陌生,所以我确定我在这里遗漏了一些东西,我只是不知道什么?

  • 我到处寻找解决方案,尝试了不同的解决方案,包括Chip Bennett在这里详细解释的解决方案,但我似乎仍然无法让它工作。 结果的第一页工作正常,但是从第2页开始,它只显示索引模板,并且仍然显示页面未找到。这是我的代码: 功能。php 提取查询参数的代码 循环代码: 任何建议将不胜感激。 编辑: 我还注意到,当我尝试访问第2页时,URL被修改了。 这是第1页URL: 第2页URL:

  • 我有一个自定义分类法分配给一个自定义帖子类型。我创建了一个名为“taxonomy brands.php”的模板,当我访问自定义分类法存档时会调用该模板,但是当我调用该模板中的循环时,它认为我没有任何帖子(它跳过if(have_posts())并执行else{}).我的自定义帖子类型为“has_archive”= 代码中是否有可能导致这种情况?提前感谢你的帮助。 这是我用来注册CPT的代码。 这是我

  • 第一wp_query后WordPress分页不工作。我正在对第一个wp_query对象返回的数据执行一些操作。但是在第二次查询之后,分页不起作用。 我尝试从其中一个查询中删除“paged”参数,该参数要么给出错误的结果,要么没有分页。例如,此查询第一次返回28个结果,但第二次查询后仅返回6个结果。如果我从第一个查询中删除'paged'参数并将其添加到第二个查询中,那么当它应该返回3页时,只返回一页