我有麻烦了wp_pagenavi
使用自定义查询处理起始页。它在每个标准模板(如类别)上都运行良好。php。但不是在主页上。
代码如下:
<?php
$args=query_posts(array(
\'post__not_in\'=> array(419),
\'post_type\' => \'post\',
\'posts_per_page\' => 10,
\'paged\' => get_query_var(\'page\'), ));
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<?php
$featuredImage = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );
$s1=strtolower($title);
?>
<div id="post-<?php echo $post->ID;?>" <?php $item_format = is_video() ? \'video\' : \'post\'; post_class(\'item cf item-\'.$item_format); ?>>
<div class="thumb">
<?PHP \'<a class="clip-link" data-id="\'.$post->Id.\'" title="\'.esc_attr(get_the_title($post->Id)).\'" href="\'.get_permalink($post->Id).\'">\'?>
<a class="clip-link" title="<?php the_title();?>" href="<?php the_permalink();?>" rel="bookmark">
<span class="clip">
<?php echo\'<img src="\'.$featuredImage.\'" alt="\'.esc_attr(get_the_title($post->Id)).\'" />\';?>
<span class="vertical-align"></span>
</span>
<span class="overlay"></span>
</a>
</div><!--- thumb----->
</div><!-- end #post-<?php the_ID(); ?> -->
<?php
endwhile;
global $my_query;
$total_pages = $my_query->max_num_pages;
if($total_pages > 1)
{ ?>
<div class="loop-nav pag-nav">
<div class="loop-nav-inner">
<?php
if(function_exists(\'wp_pagenavi\')) {
wp_pagenavi();
} else {
$label = __(\'« Prev\', \'dp\');
if($prev = get_previous_posts_link($label))
echo str_replace(\'<a\', \'<a clas="prev"\', $prev);
else
echo \'<span class="prev">\'.$label.\'</span>\';
$label = __(\'Next »\', \'dp\');
if($next = get_next_posts_link($label))
echo str_replace(\'<a\', \'<a class="next"\', $next);
else
echo \'<span class="next">\'.$label.\'</span>\';
} ?>
</div>
</div><!-- end .loop-nav -->
<?php
}
}
wp_reset_query(); // Restore global post data stomped by the_post().
?>
</div><!---nag cf---->
</div><!---loop-content grid-mini--->
分页显示,但url
/page/2/
它显示出不工作
/page/1/
后果
SO网友:Pieter Goosen
不幸的是,自定义循环的构造有点混乱。我现在不打算讨论这个问题,但我会添加链接供您阅读:-)。
您应该去看看如何使用WP_Query
. 您还应该了解如何使用next_posts_link
使用自定义查询时。最后一点,您的代码中有一些bug,您需要查看一下。您应该在wp config中将调试设置为true。php。这是一篇关于Debugging Wordpress
此时,您只需要创建一个自定义查询来从循环中删除一篇文章。除此之外,您正在自定义循环中运行主查询。
Here is how I would tackle this problem.
使用标准循环重置页面,您使用的循环与上述用于类别的循环相同。php。现在,使用
pre_get_posts
从主查询中排除您的帖子。这是代码。在函数中添加此项。php。这是根据法典修改的。
function exclude_single_posts_home($query) {
if ($query->is_home() AND $query- >is_main_query()) {
$query->set(\'post__not_in\', array(419));
}
}
add_action(\'pre_get_posts\', \'exclude_single_posts_home\');