我的wp-navi插件在任何使用全局阅读配置的类别上都能顺利运行(每页发布一次“3”),但我有一个类别,我只需要每页显示1个,手动设置此值在循环之外破坏我的分页链接,它会生成很多页面(而不是两个,因为我只有两个帖子)并且他们带到家里(我猜是某种404),我尝试过尽可能多的解决方案我可以在stackoverflow和谷歌找到,但没有运气,我已经使用wp几个星期所以我不确定我是否在这里做了一些非常愚蠢的事情,所以请帮帮我。
以下是代码:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
//query 1 post
query_posts("posts_per_page=1&paged=$paged");
?>
<?php while(have_posts()) : the_post(); ?>
<div class="entry">
<div class="single_entry">
<p>
<?php the_content(); ?>
<div class="clear"></div>
</p>
<?=get_social(); ?>
<div class="clear"></div>
</div>
</div>
<?php endwhile; ?>
<?php if(function_exists('wp_pagenavi')) { ?>
<div id="pagination">
<?php wp_pagenavi(); ?>
</div>
<?php } ?>
提前致谢=)。
修改
我找到了一些有趣的东西,如果我设置&paged=2
它实际上显示第二页,而页面导航说“第2页的2”,但只有当网址保持这样“mysite.com/category/”时我添加“/ page / 2 /”到最后,它将我重定向到破碎的主页。因此,即使pagenavi有效,“/ page /#/”也会破坏它,当然the get_query_var('paged')
或get_query_var('page')
将返回其默认值“1”,因为我没有使用“/ page / “结构,也许我可以通过添加一个?p =#来修复,当我点击每个页面的数量时,不太确定如何在插件文件中做到这一点,所以我希望你们可以根据什么来帮助我我现在说,如果没有,我会试着看看我如何解决这个丑陋的方式。再次感谢。
答案 0 :(得分:1)
好吧我用js / jq修复了这个问题我宁愿用wp codex找到修复但是我尝试的一切都没用了我无论怎样都需要它来解决这个问题,除此之外我不知道这些是怎么回事永久链接在内部工作,编辑插件有点灾难性,在网址中添加“&amp; p = 2”与“/ page / 2”造成相同的损害,所以我用jq创建了一个脚本来删除链接pagenavi,获取他们的目标页面,为每个页面添加一个onclick并将目标页面编号作为参数传递,以便稍后替换表单上的隐藏值并发送表单,然后检索页码并将其添加到query_posts,它就像一个魅力,但我希望我知道如何在wp中做一个正确的修复,或者如果它是一个bug我认为我必须提交一张票。感谢您的帮助,如果有人有更多想法欢迎,如果有人有同样的问题,请随时使用此修复程序。
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post" id="change_page">
<input name="target_page" type="hidden" value="1" id="target_page" />
</form>
<script type="text/javascript">
function go_to_page(target_page){
var page = target_page;
$("#target_page").val(page);
$('#change_page').submit()
}
$(".wp-pagenavi").find("a").each(function(){
var page = $(this).attr("href");
page = page.slice(-3);
page = page.replace("/","");
page = page.replace("/","");
// The if below, only apllies to the first link, since it doesn't use "/page/#" structure.
if(isNaN(page)) { page = 1; }
$(this).attr("href","javascript:void(0)");
$(this).attr("OnClick","go_to_page("+page+")");
console.log(page);
});
</script>
在页面顶部我用这个:
if(isset($_POST["target_page"])) {
$page = $_POST["target_page"];
} else {
$page = 1;
}
答案 1 :(得分:0)
尝试此操作从一个类别中获取一个帖子,并保持其分页:
query_posts( "category_name=cat_slug_here&posts_per_page=1&paged=$paged");
答案 2 :(得分:0)
我也遇到了这个奇怪的分页问题。我不知道它是否因为最新版本的wp但是我尝试了不同的解决方案,只有这个调整对我有用。将 get_query_var('paged')更改为 get_query_var('page')。试试这个
<?php
$paged = (get_query_var('page')) ? get_query_var('page') : 1; //notice this
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('showposts=1&paged='.$paged);
?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="entry">
<div class="single_entry">
<p>
<?php the_content(); ?>
<div class="clear"></div>
</p>
<?=get_social(); ?>
<div class="clear"></div>
</div><!-- fin expert -->
</div><!-- fin entry -->
<?php endwhile; ?>
<?php if(function_exists('wp_pagenavi')) { ?>
<div id="pagination">
<?php wp_pagenavi(); ?>
</div>
<?php } ?>
<?php $wp_query = null; $wp_query = $temp; ?>
注意:我还注意到您的 if(function_exists('wp_pagenavi')){语句中没有右括号。纠正这个问题。
答案 3 :(得分:0)
您应该使用WP_Query类来构建查询。并在wp_pagenavi()中使用此对象作为变量。
所以你的代码应该是这样的。
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$the_query = new WP_Query( $args );
$the_query->query('showposts=1&paged='.$paged);
?>
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<div class="entry">
<div class="single_entry">
<p>
<?php the_content(); ?>
<div class="clear"></div>
</p>
<?=get_social(); ?>
<div class="clear"></div>
</div><!-- fin expert -->
</div><!-- fin entry -->
<?php endwhile; ?>
<?php if(function_exists('wp_pagenavi')) { ?>
<div id="pagination">
<?php wp_pagenavi(array( 'query' => $the_query )); ?>
</div>
<?php } ?>