2011-03-22 206 views
2

我想订购我的所有帖子与多个cutom字段(Wordpress 3)。 为例,我有2定制情侣meta_key/meta_value:通过元键值的Wordpress查询订单帖子

" order_submenuexpositions/numeric " 
" display_submenuexpositions/boolean " 

我想这样的,但结果它从 “order_submenuexpositions” meta_key不是订货人的meta_value:

SELECT * FROM wp_posts 
LEFT JOIN wp_postmeta wpostmetaOrder ON (wp_posts.ID = wpostmetaOrder.post_id AND wpostmetaOrder.meta_key = 'order_submenuexpositions') 
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
LEFT JOIN wp_term_relationships wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
LEFT JOIN wp_term_taxonomy wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
WHERE wp_postmeta.meta_key = 'display_submenuexpositions' 
AND wp_postmeta.meta_value = 'true' 
AND wp_posts.post_status = 'publish' 
AND wp_posts.post_type = 'post' 
AND wp_term_taxonomy.taxonomy = 'category' 
ORDER BY wpostmetaOrder.meta_value ASC,wp_postmeta.meta_value ASC 

我该怎么办它呢?

谢谢!


OK解决了,这是因为meta_value SQL字段类型是LONGTEXT我试图订购整数value..it的不work.you必须在一个整数转换类型,像这样:

SELECT * FROM wp_posts 
LEFT JOIN wp_postmeta wpostmetaOrder ON (wp_posts.ID = wpostmetaOrder.post_id AND wpostmetaOrder.meta_key = 'order_submenuexpositions') 
LEFT JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
LEFT JOIN wp_term_relationships wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id) 
LEFT JOIN wp_term_taxonomy wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id) 
WHERE wp_postmeta.meta_key = 'display_submenuexpositions' 
    AND wp_postmeta.meta_value = 'true' 
    AND wp_posts.post_status = 'publish' 
    AND wp_posts.post_type = 'post' 
    AND wp_term_taxonomy.taxonomy = 'category' 
ORDER BY CAST(wpostmetaOrder.meta_value AS SIGNED) ASC,wp_postmeta.meta_value ASC` 

回答

1

实际上,您可以在不使用复杂SQL查询的情况下做到这一点,以备将来参考。

下面是一个例子:

$args = array(
'posts_per_page' => 250, 
'post_type' => 'books', 
'meta_query' => array(

    array(
     'key' => 'author', 
     'value' => $author_name, 
     'compare' => '==' 
    ), 

    array(
     'key' => 'publisher_id', 
     'value' => $publisher_id, 
     'compare' => '!=', 
     'type' => 'NUMBER' 
    ) 
) 
); 

$the_query = new WP_Query($args); while ($the_query->have_posts()) : $the_query->the_post(); 

// LOOP GOES HERE 

endwhile; 

您可以添加“Meta_query”内其他阵列挖掘更深,你还可以了解不同类型的“比较”,并可在“类型”选项wordpress codex。

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters