Wordpress - 按自定义分类法订购自定义帖子类型

时间:2013-05-30 11:50:05

标签: 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 个答案:

答案 0 :(得分:1)

基本上,下面的代码设置过滤器以添加“join”子句以在查询中包含术语表,将其限制为类别,然后按类别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() ?>