2012-10-31 56 views
0

我試圖顯示一個自定義的帖子類型列表排序由位於其自己的表中的值。我正在使用一個名爲wti_like_posts的插件,它允許用戶通過大拇指向上/向下的方式評價帖子。wordpress自定義orderby語句

該表包含附加到它的分數和post_id。我希望能夠在查詢中添加'orderby'已有的選項'rating'選項,因此當我查詢帖子時可能會考慮到該分數。

你知道有什麼好辦法嗎?我想我必須使用add_filter,但我已經嘗試過,並且無法弄清楚。任何幫助將不勝感激 !

在此先感謝

回答

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 =等級& 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); 
+0

感謝你的答案 !我已經設法使用這種方法來運行一個列表。但是,我想將這個orderby選項添加到wordpress的選項中,所以我可以將它與'get_posts('post_type = type&num_posts = 10&orderby = rating&meta_key = foo [...]')'一起使用。因爲我想用它來動態地過濾不同參數(分類法,搜索,作者等等)的結果... – Charleshaa

+0

更新了我的答案 – Marty

+0

事情是,我想要的值不在wp_postmeta表中,它在它自己的表格中......這就是爲什麼我不能使用這種方法......'meta_key = foo'只是一個例子,因爲我想告訴你我的請求中已經有很多參數,只是忽略它... – Charleshaa