2012-10-29 41 views
0

我修改了博客文章的WordPress主循環,使它根據提交的過濾器查詢和循環不同類型的帖子。如何在提交新查詢後刷新分頁鏈接?

在HTML開頭,有一個表單有幾個按鈕作爲選項,它類似於SA站點菜單:問題標籤用戶徽章未答覆。

當訪客點擊其中一個菜單按鈕時,會提交一個新的WP_Query。

下面的選項是帖子的循環,取決於提交的過濾器。

的PHP代碼基本上是一個標準的WordPress循環使用自定義功能:

$args= !empty($_POST['filter']) ? $_POST['filter']:null; 
    get_option_nav(); 
    if(my_loop_have_posts(array('filter'=>$args))): 
    while my_loop_posts(): the_my_loop_post(); 
    get_template_part('contents'); 
    endwhile; 
    endif; 

一切正常,除了只有默認的過濾器得到正確的分頁鏈接的罰款。提交新過濾器後,單擊分頁鏈接時,它將轉到默認過濾器的頁面。如何修改wordpress分頁鏈接以使其適用於其他過濾器?

下面是我用詢問參數代碼:

function get_args($args){ 
$defaults= array( 
    'order' => 'DESC', 
    'orderby' => 'modified', 
    'max_num_pages' =>5, 
    'paged' => get_paged(), 
    'post_status' => 'any', 
    'post_type' => array ('post', 'docs','topics'), 
    'posts_per_page' => 5, 
    ) 
$args = wp_parse_args ($args, $defaults); 
extract ($args); 
if(!empty($args['filter'])){ 
    switch ($args['filter']){ 
     case 'top_voted': 
     $args['post_type'] = 'docs'; 
     $args['meta_key'] = '_vote_total'; 
     $args['order'] = 'DESC'; 
     $args['orderby']='meta_value_num'; 
     break; 
     case 'unanswered_questions': 
     $args['post_type] = 'topics'; 
     $args['blabla'] = 'blabla'; 
     break; 
     default: 
      blabla; 
     break; 
} 
return $args; 
} 

和代碼分頁:

function get_paged() { 
    global $wp_query; 
    if (get_query_var('paged')) { 
     $paged = get_query_var('paged'); 

    } elseif (! empty($wp_query->query['paged'])) { 
     $paged = $wp_query->query['paged']; 
    } 

    if (! empty($paged)) 
     return (int) $paged; 

    return 1; 
} 

回答

0

當你犯了一個自定義查詢,則需要顯式調用的每個參數查詢。因此,標準的消失和分頁情況一樣消失。

取決於你是如何使這個新的查詢,你可以嘗試:

  • 要連接之初$ QUERY_STRING,例如 $query = new WP_Query($query_string . 'order=DESC')因爲它是在食品法典解釋說:

如果要保留原始查詢參數信息 用於生成當前查詢,然後添加或重載一些 參數,則可以使用$ query_string gl在呼叫 到query_posts()中的obal變量。

  • 要想從默認查詢分頁和您的自定義查詢 $paged = get_query_var('paged'); $query = new WP_Query(array('paged' => $paged));

在你的情況下使用它有什麼不對您的get_paged()函數。我已經測試過它並不起作用,但我還沒有找到該錯誤。相反,我嘗試了我通常使用的東西,它適用於我:

function get_paged() { 
    if (get_query_var('paged')) { 
     $paged = get_query_var('paged'); 
       } elseif (get_query_var('page')) { $paged = get_query_var('page'); 
       } else { $paged = 1; } 
     return $paged; 
    } 

某些東西似乎失敗了,如果其他語句。讓我知道這是否解決了你的問題。

+0

我已經完成了my_loop_have_posts()中的所有自定義查詢參數 – Jenny

+0

您是否可以共享您用於自定義查詢的代碼(僅舉一例)? – Hernan

+0

剛剛在我的問題中添加了$ args代碼。 – Jenny