Sql请求按wordpress mu中的顺序对博客进行排序?

时间:2010-09-28 18:36:29

标签: sql wordpress

我正在使用以下代码生成wordpresspress mu网络中所有wordpress博客的列表:

    $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'");
        }

2 个答案:

答案 0 :(得分:0)

不知道WordPress数据库架构:

如果$wpdb->blogs表和$blog_options表中都有唯一的博客ID,您可以在它们之间加入,如此(伪代码):

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 ...]

在此查询中,您已使用optionname ='blogname'将每个博客加入到关联的blog_option记录中。 JOIN中的内部查询返回带有别名'blogname'的option_value,以便您可以在ORDER BY子句中引用它。

您必须根据实际的数据库架构稍微使用该查询,但希望这是一个开始!

答案 1 :(得分:0)

根据wordpress文档,由于数据库结构的原因,不可能仅使用SQL在多博客网络上对wordpress-blog进行排序。