恐怕这很难做到。qTranslate将所有标题存储在一个数据库字段中,作为带有一些附加标记的串联字符串,因此没有机会使用SQL对其进行排序并快速完成。
您可以执行以下两种操作之一:
1. Stop using qTranslate
它确实还有许多其他缺陷。您可以使用WPML或Polylang,两者都要好得多。
2. Sort them in PHP
运行此查询后,不要使用SQL对查询中的帖子进行排序,而使用PHP对其进行排序。
WP_Query
存储在中找到的帖子
$wp_query->posts
. 可以使用PHP对该数组进行排序。当然,您必须选择所有帖子才能使其工作,因此,如果此查询中有许多帖子,这是一个相当糟糕的主意。但如果只有少数人,那就不会那么糟糕了。。。
下面的示例代码-在这里编写,因此可能存在错误。
<?php
$my_query = new WP_Query( array(\'post_type\'=>\'page\', \'orderby\'=>\'title\', \'order\'=>\'ASC\', \'posts_per_page\'=>-1) );
if ( $my_query ->have_posts() ):
?>
<ul class="posts-list">
<?php
$found_posts = array();
foreach ( $my_query->posts as $k=>$p ) {
$found_posts[ apply_filters(\'the_title\', $p->post_title) ] = $p;
}
ksort($found_posts);
$i=0;
foreach ($found_posts as $k=>$p) {
$my_query->posts[$i++] = $p;
}
?>
<?php while ( $my_query->have_posts() ): $my_query->the_post(); ?>
<li><h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2></li>
<?php endwhile; ?>
</ul>
<?php endif; wp_reset_postdata(); ?>