2013-08-05 61 views
0

我目前通过循环的所有帖子,并显示post_meta值是这样的:订购WordPress的post_meta - 最低到最高

global $wpdb; 
$table = $wpdb->prefix . 'postmeta'; 
$theid = get_the_id(); 
$getLowestPrice = $wpdb->get_results("SELECT * FROM $table WHERE meta_value = '$theid'"); 
foreach ($getLowestPrice as $post){ 

get_post_meta($post->post_id, '_wholesale_price', false); 

} 

有没有办法命令的结果,最低 - >最高?目前,他们正在随机显示,或者在输入时显示。

+0

您可以使用WP查询对于此类似如下 '$ query = new WP_Query(array('post_type'=>'product','orderby'=>'meta_value','meta_key'=>'price','order'=>'ASC' ));' –

+0

我试过了,这只是得到一个连续的循环? – danyo

+0

只是''meta_key'=>'_wholesale_price''在上述查询insteat'meta_key'=>'价格' –

回答

0

使用下面的代码

<?php 
global $wpdb; 
$table = $wpdb->prefix . 'postmeta'; 
$theid = get_the_id(); 
$getLowestPrice = $wpdb->get_results("SELECT * FROM $table WHERE meta_value = '$theid'"); 
$all_post = array(); 
foreach ($getLowestPrice as $post){ 
    $all_post[] = $post->post_id; 

} 
$query = new WP_Query(array('post__in' => $all_post, 'orderby' => 'meta_value', 'meta_key' => '_wholesale_price','order' => 'ASC')); 

// The Loop 
if ($query->have_posts()) { 
while ($query->have_posts()) { 
    $query->the_post(); 
    echo '<div>' . get_post_meta($get_the_ID(), '_wholesale_price', false);() . '</div>'; 
} 
} else { 
// no posts found 
} 
/* Restore original Post Data */ 
wp_reset_postdata(); 
?>` 
0

这看起来有点错误的我。如果你想订购由元键值职位(除非我错了,这是你在做什么),那么我通常会去了解它使用WP_Query()

global $wp_query; 

$args = array(
    'post_type' => '[YOUR POST TYPE]', 
    'meta_key' => '_wholesale_price', 
    'orderby' => 'meta_value meta_value_num', // meta_value_num for value 
    'order' => 'ASC' // or DSC for low/high 
); 

$wp_query - new WP_Query($args); 

if ($wp_query->have_posts()) { 
    while ($wp_query->have_posts()) { 
    $wp_query->the_post(); 

    // Your loop 

    } 
} 
+0

嗨乔,我已经尝试了上述。显然将后期类型和内容更改为循环。但是我得到一个错误:致命错误:调用非对象 – danyo

+0

iv上的成员函数have_posts(),通过添加全局$ wp_query;但没有我得到一个无限循环!? – danyo

+0

对不起 - 忘了提及全局查询变种。我已经添加了这个。你可以将代码粘贴到循环中吗? –