Wordpress分页不工作
我尝试了多种解决方案,但都不起作用 当我转到/page/2时,它不起作用 我正在我的主题的index.php中执行一个自定义查询Wordpress分页不工作,wordpress,pagination,Wordpress,Pagination,我尝试了多种解决方案,但都不起作用 当我转到/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(
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)我有时也很难让分页正常工作。尝试使用下面的查询,看看是否有帮助。我只添加了一行代码,并将您的查询更改为不使用
$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; ?>
//在此处显示您的内容
我也遇到了同样的问题,这为我解决了所有问题。这使我能够使用非常永久的链接对index.php和page.php进行分页
HTML/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>
这最初是因为我稍微修改了它,以便在主页上进行分页
这同样可以做几件事。它为你的页面分页,每个页面都有自己的链接(我觉得这很好),并且它还重新写入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' );
我已经为这个问题挣扎了一段时间,结果发现我们的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.
经过进一步阅读,我发现了这一点
(int)$page
是文章的页面,如查询变量页面所指定:get_query_var('page')
李>
(int)$paged
是全局变量,包含帖子列表的页码(如在归档中)这意味着,如果您使用的是页面模板(这是一个单视图模板)并且正在使用循环,则需要设置此变量。这里有几件事,请不要更改主页或任何存档页面上自定义查询的主查询。分页总是有问题的 此外,切勿使用创建自定义查询。我的重点,就像《永不》 注意:此功能不适用于插件或主题。正如后面解释的,有更好、更高性能的选项来更改主查询。query_posts()是一种过于简单且有问题的方法,通过将页面的主查询替换为查询的新实例来修改页面的主查询。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时) 如果需要更改主页或任何存档页面的行为,请在执行主查询之前使用更改/修改主查询。这是更改主查询的正确方法。通过在执行前更改主查询,分页将不会有问题
pre_get_posts
可以与条件标记结合使用,以特定页面为目标。请查看为示例提供的链接 wordpress.se会关注这个问题,我想我尝试了多种解决方案,但都不起作用。wordpress.stackexchange.com是这样一个网站,但专门针对wordpress问题。他们除了wordpress之外什么都不做,所以如果你在这里没有得到足够的答案,就试试那里。这里有一个关于查询帖子和分页的很好的阅读:你有超过10篇帖子吗?你包括页面导航链接吗?是的,我有10多篇文章,我包括页面导航链接。我已经在我的网站上添加了链接,这可能会有帮助吗?不幸的是,网站链接没有真正的帮助,因为我们看不到PHP代码。尝试更新你的永久链接。只需进入Permalinks并重新保存即可。您正在使用WP PageNavi插件吗?看起来你的页面链接来自该插件。尝试重新保存永久链接,但也不起作用。是的,使用wp pagenavi+1真棒!!!!!!这是完美的答案!它在WP 3.5+上完美地为我工作。谢谢你!
$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.