2011-03-28 79 views
1

我的帖子有一大堆的自定义字段中,目前正由“过度lenght”与自定义字段WordPress的查询帮助

下令我有所谓的“过度lenghtin”另一个自定义字段。

我想继续过lenght但如果2个职位有相同的价值这一领域,我想也过lengthin命令他们为了我的帖子。

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

这里是由当前查询

$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"); 

现在我需要用我的自定义字段“超长”,并下令再“过lengthin”

我似乎有现在这个工作,这里的我的最终查询:

$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

,老实说,当它涉及到一个以上的自定义字段,最简单的解决方案是使用$wpdb->get_results而不是WP_Query。

,因为它目前正在与

echo $GLOBALS['wp_query']->request; 

然后,只需更新SQL,并按照步骤从这里创建修订后的循环中执行可以得到查询:

+0

我重写了我的查询,但仍然需要一些帮助orderby。 – Adam 2011-03-29 14:26:56

+0

感谢您指点我正确的方向! – Adam 2011-03-29 15:38:45