2012-12-12 163 views
1

我正在使用自定義帖子類型來顯示頁面上的一些信息。WordPress的:自定義帖子類型篩選,排序和搜索

Wordpress Custom Post type displaying list of custom post type on existing page

有沒有辦法添加過濾,排序和搜索功能的數據?

我已經設法獲得分頁工作「domain.com/page/2」

$the_query = new WP_Query(array('post_type' => 'custom_post_type', 'posts_per_page' => 25, 'paged' => $paged, 'orderby'=>'title', 'order' => 'ASC')); 

我使用jQuery的DataTable(http://datatables.net/)來添加排序,分頁和搜索,但是當你使用數據表在超過1000條記錄中,它變得非常緩慢,有時會顯示關於內存不足的php錯誤。 這是一個臨時的解決方案,直到我想出了一個方法來正確使用Wordpress

回答

0

你提到了一個jQuery工具來對數據進行排序,但是這不是一個好的主意,來自數據庫的數據。 jQuery排序工具是爲了使表格更具可讀性,並幫助用戶瀏覽已經顯示在頁面上的數據。對於數據庫來說,這個想法更重要的是隻獲取所需的數據,而不是獲取頁面中的所有內容,然後對元素進行排序或過濾以使其脫離視圖(但仍在頁面中,這意味着它更重,更長的下載時間,更難以處理等)。 你已經設法爲你的自定義帖子類型實現分頁,所以這很好。現在只需包含一個搜索表單。 WordPress默認searchform(searchform.php)看起來是這樣的:

  <form role="search" method="get" id="searchform" action="<?php echo home_url('/'); ?>"> 
       <div><label class="screen-reader-text" for="s">Search for:</label> 
        <input type="text" value="" name="s" id="s" /> 
        <input type="submit" id="searchsubmit" value="Search" /> 
       </div> 
      </form> 

你只需要一點點行添加到它限制搜索到您的自定義文章類型:

    <input type="hidden" name="post_type" value="name_of_your_post_type" /> 

因此,這將是這樣的:

  <form role="search" method="get" id="searchform" action="<?php echo home_url('/'); ?>"> 
       <div><label class="screen-reader-text" for="s">Search for:</label> 
        <input type="text" value="" name="s" id="s" /> 
        <input type="submit" id="searchsubmit" value="Search" /> 
        <input type="hidden" name="post_type" value="name_of_your_post_type" /> 
       </div> 
      </form> 
0

感謝barakadam,我沒有嘗試過搜索,但是我能弄清楚順序和排序依據

我使用$ _GET來獲取order和orderby的值,並在

中傳遞這些變量
相關問題