wordpress自定义orderby语句

时间:2012-10-31 11:14:13

标签: php wordpress loops

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

该表包含附加的分数和post_id。我希望能够添加已经存在的' orderby'在查询中选项'评分',因此在查询帖子时可以考虑该分数。

你知道有什么好办法吗?我想我必须使用add_filter,但我已经尝试过但无法弄明白。任何帮助将不胜感激!

提前致谢

1 个答案:

答案 0 :(得分: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&amp; meta_key = foo to orderby = meta_value&amp; 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 );