不幸的是,我不相信WordPress能够在查询中按多个元键条件进行排序:只有一个。这可能是因为对于每个选定的元键值,都涉及另一个联接。您还可以看到,在WP_Query
班这可以在中看到wp-includes/query.php
line 2322
也就是说,当然可以用PHP进行排序。
$posts = get_posts( $query );
function prefix_sort_by_meta( $a, $b ) {
$custom_a = get_post_custom( $a->ID );
$custom_b = get_post_custom( $b->ID );
return strcmp(
$custom_a[\'YOUR_PREFIX_newcar_body_type\'][0] . \'-\' . $custom_a[\'YOUR_PREFIX_newcar_transmission_type\'][0] . \'-\' . $custom_a[\'YOUR_PREFIX_newcar_variant\'][0],
$custom_b[\'YOUR_PREFIX_newcar_body_type\'][0] . \'-\' . $custom_b[\'YOUR_PREFIX_newcar_transmission_type\'][0] . \'-\' . $custom_b[\'YOUR_PREFIX_newcar_variant\'][0]);
}
usort( $posts, \'prefix_sort_by_meta\' );
global $post;
// Pseudo-loop
foreach( $posts as $post ) {
setup_postdata( $post );
// Your item template here...
}
这只是实现按元键值排序的一种方法:将元键值与“-”连接起来,并作为字符串排序。你可以玩
prefix_sort_by_meta
函数实现不同的排序方法。请注意,如果任何帖子都不存在各种元键,那么上面的代码将抛出PHP通知,并且应该更加防御性地进行编码。