我有以下代码:
$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”,在这里我有几个类别,例如'视觉','舞台','灯光','声音'......
目前的情况是,帖子的顺序将按字母顺序显示,因此订单将为:
我想要做的是能够严格控制这种排序,例如:
非常感谢所有帮助。
答案 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() ?>