wordpress查询与自定义字段帮助

时间:2011-03-28 16:43:05

标签: wordpress sql-order-by custom-fields posts

我的帖子有很多自定义字段,目前正在按“over-lenght”

进行排序

我有另一个名为“over-lenghtin”的自定义字段。

我想继续按照过长的顺序订购我的帖子,但是如果这两个帖子对于这个字段有相同的价值,我也想按照过长的顺序排序。

我想知道如何修改查询或添加函数来执行此操作?

这是当前查询

$loop = new WP_Query( array ( 'post_type' => 'new', 'orderby' => 'meta_value_num', 'meta_key' => 'over-length', 'meta_query' => array( array( 'key' => 'over-make', 'value' => 'Doral', 'compare' => 'LIKE') ) ) );

好的,所以我通过查询重写了使用$ wpdb-> get_results,但我仍然对如何通过2个不同的自定义字段进行排序感到困惑。

这是我的新查询:

$wpdb->get_results("SELECT * FROM $wpdb->posts, wp_postmeta  WHERE wp_posts.ID = wp_postmeta.post_id AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'new' AND wp_postmeta.meta_value = 'Doral' ORDER BY");

现在我需要按自定义字段'超长'然后'超长'

进行排序

我现在似乎有这个工作,这是我的最后一个问题:

$wpdb->get_results("SELECT * FROM $wpdb->posts 
LEFT JOIN $wpdb->postmeta AS overlength ON(
$wpdb->posts.ID = overlength.post_id
AND overlength.meta_key = 'over-length'  
)
LEFT JOIN $wpdb->postmeta AS overlengthin ON(
$wpdb->posts.ID = overlengthin.post_id
AND overlengthin.meta_key = 'over-lengthin'  
)
LEFT JOIN $wpdb->postmeta AS overmake ON(
$wpdb->posts.ID = overmake.post_id
AND overmake.meta_key = 'over-make'  
)
WHERE wp_posts.post_status = 'publish' AND wp_posts.post_type = 'new' AND overmake.meta_value = 'Doral' ORDER BY 0+overlength.meta_value DESC, 0+overlengthin.meta_value  DESC");

1 个答案:

答案 0 :(得分:1)

老实说,当谈到多个自定义字段时,最简单的解决方案是使用$wpdb->get_results而不是WP_Query。

您可以使用

获取当前正在执行的查询
echo $GLOBALS['wp_query']->request;

然后只需更新SQL并按照以下步骤创建修改后的循环: