2010-09-28 55 views
0

我使用下面的代碼來生成在我的wordpress畝網絡的所有的WordPress博客的列表:sql-request在wordpress mu按順序排序博客?

$blogs = $wpdb->get_results("SELECT * FROM " . $wpdb->blogs . " WHERE last_updated!='0000-00-00 00:00:00' AND public='1' AND spam = '0' AND deleted ='0' ORDER BY registered " . $order . " LIMIT " . $limit); 

我怎麼辦責令其按字母順序排列,而不是由當他們註冊?如果你不熟悉wordpress的數據庫佈局,我會很樂意給你一個解釋性的解釋!這個名字是不是在同一個數據庫中註冊,但是這是BLOGNAME是如何收集輸出:

foreach ($blogs as $blog) { 
$blog_options = "wp_" . $blog->blog_id . "_options"; 
$blog_name = $wpdb->get_col("SELECT option_value FROM " . $blog_options . " WHERE option_name='blogname'"); 
     } 

回答

0

根據wordpress文檔,由於數據庫結構的原因,不可能在僅使用SQL的多博客網絡上對wordpress博客進行排序。

0

不知道WordPress的數據庫模式:

如果在這兩個$wpdb->blogs獨特的博客ID表和$blog_options表,可以將它們之間的連接,就像這樣(僞):

SELECT [...] 
FROM $wpdb->blogs a 
LEFT JOIN (SELECT id, option_value AS blogname FROM $blog_options WHERE option_name='blogname') b ON a.id = b.id 
WHERE last_updated!='0000-00-00 00:00:00' AND public='1' AND spam = '0' AND deleted ='0' ORDER BY blogname [... etc ...] 

在此查詢中,你已經加入了每個博客的相關blog_option紀錄OPTIONNAME =「BLOGNAME」。 JOIN中的內部查詢返回option_value和別名'blogname',以便您可以在ORDER BY子句中引用它。

您必須根據實際的數據庫模式稍微處理該查詢,但希望這是一個開始!