2013-08-05 84 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

對不起 - 忘了提及全局查詢變種。我已經添加了這個。你可以將代碼粘貼到循環中嗎? –