0

我正在尝试显示一个自定义帖子类型列表,该列表按位于其自己表中的值排序。我正在使用一个名为 wti_like_posts 的插件,它允许用户通过拇指向上/向下的方式对帖子进行评分。

该表包含附加到它的分数和 post_id。我希望能够在查询中为“orderby”的现有选项添加一个选项“rating”,以便在我查询帖子时考虑该分数。

你知道这样做的好方法吗?我想我必须使用 add_filter,但我已经尝试过但无法弄清楚。任何帮助将不胜感激 !

提前致谢

4

1 回答 1

0

您必须构建一个自定义 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 );
于 2012-10-31T12:09:36.877 回答