您将不得不建立一个自定义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