基于多个自定义字段对帖子进行排序

时间:2012-06-16 作者:Solomon Henry

我有三个自定义字段

元密钥;您的\\u PREFIX\\u newcar\\u body\\u type;您的\\u PREFIX\\u newcar\\u transmission\\u type;您的\\u PREFIX\\u newcar\\u variant和我必须根据这些自定义字段对帖子进行排序,并打印帖子的标题。。。

有什么想法吗?

1 个回复
SO网友:Bendoh

不幸的是,我不相信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通知,并且应该更加防御性地进行编码。

结束

相关推荐

如何将JQuery/AJAX放入短码?

这个插件的目的是创建一个列表,用户可以通过向上或向下的投票进行修改。短代码应该显示页面上的列表,并在更新数据库时使用JQuery进行fadeIn和fadeOut。有关该概念的演示,请访问http://bucketlingerwedding.com/80s-music-reception/ (注意:工作代码尚未使用AJAX)。我想把这个插件放在Wordpress存储库中,但AJAX让我很头疼。以下是最新代码。它只显示一个包含空白内容区域的页面。我需要获得这段代码以使用AJAX更新数据库,并避免重新加载页面,