2017-04-13 73 views
0

我有一個選擇允許用戶選擇博客列表頁面上顯示的帖子數量。目前,select會自動提交表單,並且posts_per_page值會針對重新加載的頁面查詢進行更新。WordPress在分頁時保留每頁的帖子價值

global $query_string; 
if(isset($_REQUEST['set_posts_per_page'])) 
    $ppp = $_REQUEST['set_posts_per_page']; 
else 
    $ppp = 12; 
query_posts("{$query_string}&posts_per_page=".$ppp); 

目前使用生成標準的WordPress功能分頁按鈕:

previous_posts_link('<span class="etc"></span>'); 
next_posts_link('<span class="etc"></span>'); 

什麼是重新工作,這使用戶可以使用分頁和posts_per_page選擇的最佳方式?

有幾頁像這樣列出不同的自定義帖子類型,必須以相同的方式工作(如果這有所作爲)。

回答

0

這是我落得這樣做。唯一的缺點是它現在在URL中增加了一個變量,但這不是世界末日。

這裏我已經完全替換了next_posts_link()和previous_posts_link(),而是添加了自定義代碼位。這些獲取分頁函數通常會使用get_previous_posts_page_link()和get_next_posts_page_link()獲取的URL,檢查set_posts_per_page REQUEST參數並將其粘貼到分頁URL上。

然後我手動構建導航按鈕並使用get參數輸入URL。 strtok函數通過每次刪除參數將URL中的參數從堆疊中停止。

<?php global $wp_query; 
    $current_page = $wp_query->get('paged'); 


    /* Previous link */ 
    $prev_url = strtok(get_previous_posts_page_link(), '?'); 

    if($prev_url && $current_page!=1 && $_REQUEST['set_posts_per_page']!='') 
     $prev_url.="?set_posts_per_page=".$_REQUEST['set_posts_per_page']; 

    if($prev_url && $current_page!=1) : ?> 
     <a href="<?=$prev_url; ?>"> 
      <span class="navbuttons__btn navbuttons__btn--next btn btn--ui" rel="next"> 
       <i class="fa fa-arrow-left"></i> 
      </span> 
     </a> 
    <?php endif; 


    /* Next link */ 
    $next_url = strtok(get_next_posts_page_link(), '?'); 

    if($next_url && $current_page!=$wp_query->max_num_pages && $_REQUEST['set_posts_per_page']!='') 
     $next_url.="?set_posts_per_page=".$_REQUEST['set_posts_per_page']; 

    if($next_url && $current_page!=$wp_query->max_num_pages) : ?> 
     <a href="<?=$next_url; ?>"> 
      <span class="navbuttons__btn navbuttons__btn--next btn btn--ui" rel="next"> 
       <i class="fa fa-arrow-right"></i> 
      </span> 
     </a> 
    <?php endif; ?> 
0

請在下面的代碼中找到該博客。

<?php 
     $queryObject = new WP_Query('post_type=blog&posts_per_page=5'); 
     // The Loop! 
     if ($queryObject->have_posts()) { 
     ?> 
     <ul> 
     <?php 
     while ($queryObject->have_posts()) { 
     $queryObject->the_post(); 
     ?> 

此外,如果你想添加分頁的頁面上添加WP-分頁撐着其易於使用。

只需添加

<?php echo wp_paginate(); ?> 

我希望這會幫助你。

謝謝

+0

對不起,但這並沒有真正解決這個問題。除非絕對必要,否則我不會尋找插件解決方案。 –

+0

檢查下面coe分頁<?php next_posts_link(); ?> <?php previous_posts_link(); ?> – Vipin

0
<?php 
// the query to set the posts per page to 5 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$args = array('posts_per_page' => 5, 'paged' => $paged); 
query_posts($args); ?> 
<!-- the loop --> 
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
     <!-- rest of the loop --> 
     <!-- the title, the content etc.. --> 
<?php endwhile; ?> 
<!-- pagination --> 
<?php next_posts_link(); ?> 
<?php previous_posts_link(); ?> 
<?php else : ?> 
<!-- No posts found --> 
<?php endif; ?> 
+0

問題的關鍵在於每頁可變的帖子值在分頁時不會丟失。你們兩位的答案都忽略了提問的原因。 –