2012-10-22 64 views
1

我有wp-navi插件在任何使用全局讀取配置的類別(每頁發佈「3」),但我有一個類別,我只需要顯示每頁1個,在循環外部手動設置這個值會破壞我的分頁鏈接,它會產生很多頁面(而不是兩個,因爲我只有兩個帖子),他們帶到家中(我猜是404),我已經嘗試了儘可能多的解決方案,我可以找到在stackoverflow和谷歌,並沒有運氣,但我一直在使用WP幾個星期,所以即時通訊不知道如果我在這裏做一些非常愚蠢的事情,所以請幫助我。wp_pagenavi無法使用每頁自定義帖子工作

下面是代碼:預先

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

//query 1 post 
query_posts("posts_per_page=1&paged=$paged");  
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; 
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 =#來修復,當我點擊pagenavi的每個數字時,不太確定如何在插件文件中做到這一點,所以我希望你們可以根據我現在說的來幫助我,如果不行,那麼我會嘗試看看我如何修復這個醜陋的方式。再次感謝您。

+0

[Check this out](http://theodin.co.uk/blog/design/wordpress-pagination-wppagenavi-queryposts.html)。 –

+1

謝謝,但它沒有工作,我明白他做了什麼,事實上我幾個小時前發現了類似的答案,但我不知道爲什麼不與我的代碼一起工作,將「cat = 18」添加到我的查詢帖子確實修復了分頁中的鏈接數量,但我仍然被重定向到一個破碎的主頁。即使手動設置分頁也不能解決它,:S感謝鏈接無論如何=)。 – Zagen

回答

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; 
} 
0

試試這個從一類獲得一個職位,並保持分頁:

query_posts("category_name=cat_slug_here&posts_per_page=1&paged=$paged"); 
+0

這樣我就沒有內容,不知道爲什麼。謝謝你的幫助。 – Zagen

+0

好的,所以你在哪個模板中放置這些代碼?我認爲它會像category-mycat.php。你正在使用的文件的名稱是什麼? – coopersita

+0

category.php,現在我知道我應該使用類別slug.php,但我結束了每個類別添加if語句來檢查類別「$ cat_title = single_cat_title('',false); if($ cat_title == 「categoryname」){...「不知道這是否是問題的一部分。 – Zagen

0

我也遇到pagination.I的這個奇怪的問題,不知道如果它因爲WP的最新版本,但我試過不同的解決方案,只有這個調整爲我工作。將您的get_query_var('paged')更改爲get_query_var('page')。試試這個

$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); 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; 

if(function_exists('wp_pagenavi')) { ?> 
     <div id="pagination"> 
      <?php wp_pagenavi(); ?> 
     </div> 
    <?php } ?> 

<?php $wp_query = null; $wp_query = $temp;?> 

注:我也注意到,你沒有閉架在你的如果(function_exists( 'wp_pagenavi')){聲明。改正這一點。

+0

哪個答案正確? –

0

您應該使用WP_Query類構建查詢。並將此對象用作wp_pagenavi()中的變量。

所以你的代碼應該看起來像。

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$the_query = new WP_Query($args); 
$the_query->query('showposts=1&paged='.$paged); 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; 
    if(function_exists('wp_pagenavi')) { ?> 

     <div id="pagination"> 

      <?php wp_pagenavi(array('query' => $the_query)); ?> 


     </div> 
       <?php }?> 
相關問題