我正在使用以下代码生成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'");
}
答案 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进行排序。