您將不得不建立一個自定義sql查詢來加入這兩個表以獲得您的結果。
global $wpdb;
$sql = "SELECT * FROM ".$wpdb->prefix."wp_posts, ".$wpdb->prefix."ratings_table WHERE wp_post.id = ratings_table.post_id";
$posts = $wpdb->get_results($sql);
echo "<ul>";
foreach ($posts as $post){
echo '<li>'.$post->title.'|'.$post->score.'<br/>';
echo '</li>';
}
echo "</ul>";
未經測試!
您將不得不調整表格&列名稱。
[更新] 確定使用get_posts(),你必須改變你的OrderBy =等級& meta_key = foo的 到的OrderBy = meta_value & meta_key =等級
見下圖:
$args = array(
'numberposts' => 10,
'offset' => 0,
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_key' => 'rating',
'post_type' => 'post',
'post_status' => 'publish'
);
$results = get_posts($args);
感謝你的答案 !我已經設法使用這種方法來運行一個列表。但是,我想將這個orderby選項添加到wordpress的選項中,所以我可以將它與'get_posts('post_type = type&num_posts = 10&orderby = rating&meta_key = foo [...]')'一起使用。因爲我想用它來動態地過濾不同參數(分類法,搜索,作者等等)的結果... – Charleshaa
更新了我的答案 – Marty
事情是,我想要的值不在wp_postmeta表中,它在它自己的表格中......這就是爲什麼我不能使用這種方法......'meta_key = foo'只是一個例子,因爲我想告訴你我的請求中已經有很多參數,只是忽略它... – Charleshaa