我想订购所有包含多个cutom字段的帖子(Wordpress 3)。 例如,我有2个自定义情侣meta_key / meta_value:
" 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而我试图对整数值进行排序..它不起作用。你必须在整数上转换类型,如下所示:
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`
答案 0 :(得分: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