2013-05-30 177 views
0

我有下面的代碼:WordPress的 - 訂單自定義文章類型通過自定義分類

$args = array('post_status'=>"publish", 
'posts_per_page' => 20, 
'post_type'=>"equipment", 
'orderby'=>"title", 
'order'=>"ASC"); 

$postslist = get_posts($args); 

foreach ($postslist as $post) : setup_postdata($post); ?> 

這一切工作正常,但我想這樣做是爲了能夠通過指定職位的順序自定義分類中的類別。

這可能嗎?

一直在嘗試使用類別數組,但沒有運氣。

爲了提供所有信息,我的自定義分類稱爲'equipcats',在這裏我有幾個類別,例如「視覺效果」,「舞臺」,「照明」,「聲音」 ......

當前標準的職位的順序將是按照字母順序顯示上升這樣的順序將是:

  • 照明
  • 聲音
  • 舞臺
  • 視覺效果

我想這樣做是爲了能有在這個順序嚴格控制,所以例如:

  • 舞臺
  • 視覺效果
  • 照明
  • 聲音

所有幫助是極大的讚賞。

回答

1

基本上,下面的代碼設置了過濾器來添加一個「連接」子句,以在查詢中包含術語表,將其限制爲類別,然後按類別ID進行排序。然後使用現有的查詢變量(如頁碼等)重新查詢。

<?php add_filter('posts_join', create_function('$a', 'global $wpdb; return $a . " INNER JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) INNER JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";')); 
     add_filter('posts_where', create_function('$a', 'global $wpdb; return $a . " AND $wpdb->term_taxonomy.taxonomy = \'category\'";')); 
     add_filter('posts_orderby', create_function('$a','global $wpdb; return "$wpdb->term_taxonomy.term_id DESC";')); 
    query_posts(''); 
?> 
<?php while (have_posts()) : the_post() ?> 
+0

感謝您的回覆,但您將如何將其整合到當前的代碼? – Johnny

+1

使用query_posts();函數,然後在執行循環之前添加這些過濾器。 – Bilal

+0

http://codex.wordpress.org/Function_Reference/query_posts – Bilal

相關問題