0

我有 wp-navi 插件可以在使用全局阅读配置的任何类别上顺利工作(每页发布“3”),但我有一个类别,我只需要每页显示 1 个,在循环外手动设置此值破坏了我的分页链接,它生成了很多页面(而不是两个,因为我只有两个帖子)并且它们带回家(我猜是某种 404),我尝试了尽可能多的解决方案我能找到在stackoverflow和google中,还没有运气,我已经使用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 页”,但只有当我添加“ /page/2/" 到最后,它会将我重定向到损坏的主页。因此,即使 pagenavi 工作,“/page/#/”当然会破坏它,the get_query_var('paged')或者get_query_var('page')将返回其默认“1”,因为我没有使用“/page/”结构,也许我可以通过以下方式进行修复当我点击页面导航的每个数字时添加一个?p=#,不太确定如何在插件文件中执行此操作,所以我希望你们可以根据我现在所说的来帮助我,如果没有,好吧我会试着看看我如何以丑陋的方式解决这个问题。再次提前感谢。

4

4 回答 4

1

好的,我使用 js/jq 解决了这个问题,我宁愿使用 wp codex 找到修复程序,但是我尝试过的所有东西都没有用,无论如何我都需要它来解决这个问题,此外我不确定这些永久链接如何在内部工作,并且编辑插件有点灾难性,在 url 中添加“&p=2”会造成与“/page/2”相同的损害,所以我用 jq 创建了一个脚本来从 pagenavi 中删除链接,获取他们的目标页面,为每个页面添加一个 onclick 并将目标页码作为参数传递,稍后替换表单上的隐藏值并发送表单,然后检索页码并将其添加到 query_posts,它就像一个魅力,但我希望我知道如何在 wp 中进行适当的修复,或者如果它是一个错误,我认为我必须提交一张票。感谢您的帮助,如果有人有更多的想法,欢迎

<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;
}
于 2012-11-04T04:52:55.303 回答
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 } ?>
于 2013-11-06T18:00:45.057 回答
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')) {语句中没有右括号。也更正这一点。

于 2012-10-23T04:16:08.557 回答
0

试试这个从一个类别中获取一篇文章,并保持分页:

query_posts( "category_name=cat_slug_here&posts_per_page=1&paged=$paged");
于 2012-10-23T01:44:13.183 回答