php
  • wordpress
  • custom-fields
  • 2012-02-22 83 views 2 likes 
    2

    我正在通過名爲「size」的自定義元值來訂購我的帖子。通過自定義元分頁的Wordpress訂單發佈

    $querystr = " 
        SELECT $wpdb->posts.* 
        FROM $wpdb->posts, $wpdb->postmeta 
        WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id 
        AND $wpdb->postmeta.meta_key = 'size' 
        AND $wpdb->posts.post_status = 'publish' 
        AND $wpdb->posts.post_type = 'post' 
        AND $wpdb->posts.post_date < NOW() 
        ORDER BY $wpdb->postmeta.meta_value DESC 
    "; 
    
    $pageposts = $wpdb->get_results($querystr, OBJECT); 
    
    if ($pageposts): 
        global $post; 
        foreach ($pageposts as $post):  
        setup_postdata($post);  
         the_title();  
        endforeach;  
    endif; 
    
    wp_pagenavi(); //creates page navigation 
    

    在同一時間我使用WP-pagenavi插件瀏覽頁面的帖子。我在每個頁面上有10個職位。

    問題:帖子在每個頁面中單獨排序。我如何通過所有頁面以降序排列帖子?

    更新:我可能已經找到了解決辦法,但我不知道如何實現它在我的代碼

    http://scribu.net/wordpress/wp-pagenavi/wpn-2-74.html

    $my_query = new WP_Query(array('tag' => 'foo', 'paged' => get_query_var('paged'))); 
    
    while ($my_query->have_posts()) : $my_query->the_post(); 
        the_title(); 
        // more stuff here 
    endwhile; 
    
    wp_pagenavi(array('query' => $my_query)); 
    
    wp_reset_postdata(); // avoid errors further down the page 
    
    +0

    如何以及在何處篩選由頁的結果? – 2012-02-22 20:54:38

    +0

    你的意思是'LIMIT'? http://php.about.com/od/mysqlcommands/g/Limit_sql.htm我不完全確定你的意思。 – Sietse 2012-02-22 20:55:42

    +0

    @Artimuz,它由Wordpress中的WP-pagenavi插件 – CyberJunkie 2012-02-22 21:05:36

    回答

    1

    我找到了一個SO後,可以解決你的問題:

    How to sort a 'query_posts' function by custom field, while limiting posts by another custom field

    那裏你會找到擴展自定義類並允許您按自定義字段進行查詢,並且還包含paged查詢變量。

    所以步驟:點擊functions.php

    1. 過去class PostsOrderedByMetaQuery代碼地方,比如通過替換查詢:

      // Retrieve `paged` in URL 
      $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
      
      // Make the query like in WP_Query but with our custom class 
      $query = new PostsOrderedByMetaQuery(array(
          'post_type' => 'post', 
          'post_status' => 'publish', 
          'paged'  => $paged, 
          'orderby_meta_key' => 'size', 
          'orderby_order' => 'DESC'   
      )); 
      
    2. 使用它!

      while ($query->have_posts()) : $query->the_post(); 
          the_title(); 
          // more stuff here 
      endwhile; 
      
      wp_pagenavi(array('query' => $query)); 
      
      wp_reset_postdata(); // avoid errors further down the page 
      
  • +0

    謝謝!代碼起作用。我只需刪除下面的'filter_where'和'remove_filter'。那些顯示較舊的帖子。 – CyberJunkie 2012-02-24 16:26:20

    +0

    我實際上必須刪除'add_filter('posts_where','filter_where');'。它導致了一個錯誤,似乎沒有 – CyberJunkie 2012-02-24 16:51:32

    +1

    工作好吧,我編輯了答案 – 2012-02-24 21:33:52

    相關問題