0

我有以下代码:

$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); ?>

这一切都很好,但我想做的是能够按自定义分类法中的类别指定帖子的顺序。

这可能吗?

一直在尝试使用类别数组,但没有运气。

只是为了提供所有信息,我的自定义分类称为“设备猫”,在这里我有几个类别,例如“视觉”、“舞台”、“灯光”、“声音”......

按照目前的情况,帖子的顺序将按字母升序显示,因此顺序为:

  • 灯光
  • 声音
  • 阶段
  • 视觉效果

我想做的是能够严格控制这种排序,例如:

  • 阶段
  • 视觉效果
  • 灯光
  • 声音

非常感谢所有帮助。

4

1 回答 1

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() ?>
于 2013-05-30T12:15:04.433 回答