我正在尝试显示一个自定义帖子类型列表,该列表按位于其自己表中的值排序。我正在使用一个名为 wti_like_posts 的插件,它允许用户通过拇指向上/向下的方式对帖子进行评分。
该表包含附加到它的分数和 post_id。我希望能够在查询中为“orderby”的现有选项添加一个选项“rating”,以便在我查询帖子时考虑该分数。
你知道这样做的好方法吗?我想我必须使用 add_filter,但我已经尝试过但无法弄清楚。任何帮助将不胜感激 !
提前致谢
您必须构建一个自定义 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=rating&meta_key=foo 更改为 orderby=meta_value&meta_key=rating
见下文:
$args = array(
'numberposts' => 10,
'offset' => 0,
'orderby' => 'meta_value',
'order' => 'ASC',
'meta_key' => 'rating',
'post_type' => 'post',
'post_status' => 'publish'
);
$results = get_posts( $args );