Wordpress:自定义订单查询(类别)

时间:2015-07-25 17:15:47

标签: wordpress

我使用的是最新版本的WP,没有安装插件,只有一个(我稍后会谈到它)。对于我分配了特色图像的每个类别,我想制作一个页面,其中每个类别都以其特色图像显示。我已经安装了Category Order和Taxonomy Order插件,以便更改类别的外观顺序。例如,我们有1,2,3,4类,所需的顺序是3,1,2,4。

在functions.php中我放了

function wptp_add_categories_to_attachments() {
    register_taxonomy_for_object_type( 'category', 'attachment' );
}
add_action( 'init' , 'wptp_add_categories_to_attachments' );

为了获得类别的特色图片。

在我的页面模板中,我放了

 $cats = get_categories();
    for_each ($cats as $category)
    {
    if ($category->term_id != 1){
       $terms[] = $category->term_id}
}

$args = array(
                        'post_type' => 'attachment',
                        'post_status'=>'inherit',
                        'category__in' => $terms,
                      /*'order_by' => 'none' */
                    );
$query = new WP_Query( $args );
.......

其余的是代码,我有"帖子"的输出。问题是 $ terms 包含正确的订单(3,1,2,4), $ query 没有(4,3,2,1)。即使我手动将数字放在' cat' ($ args)中,输出顺序也始终相同。 我甚至从 $ terms 创建了一个字符串,并将其与' cat' 一起使用,但结果是一样的。

有没有办法进行查询,结果是我想要的顺序(不是ASC,DESC,或字母,或时间依赖)?

1 个答案:

答案 0 :(得分:0)

get_categories()默认为wp_terms 所以你只需要在传递给wp_query的数组中复制它。 类别存储在term_id表中,其中wp_term_taxonomyterm_taxonomy_id的外键。这里有一个wp_term_relationships,它是表object_id的外键。最后一个表格中有post_id引用表wp_posts中的SELECT wt.name ,wp.* FROM wp_terms wt JOIN wp_term_taxonomy wtt ON wt.term_id =wtt.term_id JOIN wp_term_relationships wtr ON wtr.term_taxonomy_id=wtt.term_taxonomy_id JOIN wp_posts wp ON wp.id= wtr.object_id WHERE wp.post_type = 'attachment' AND post_status='inherit' AND... ORDER BY wt.name ASC 。 因此,您所要做的就是编写一个自定义查询来加入所有这些表并在get_categories中复制订单。像

{{1}}