我使用的是最新版本的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,或字母,或时间依赖)?
答案 0 :(得分:0)
get_categories()默认为wp_terms
所以你只需要在传递给wp_query的数组中复制它。
类别存储在term_id
表中,其中wp_term_taxonomy
是term_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}}