我正在尝试批量创建一定数量的博客:
$blog_count = 5;
$site = get_current_site();
while($blog_count > 0){
shuffle($words);
$blog_title = implode(\' \', array_slice($words, 0, mt_rand(1, 3)));
$blog_domain = $blog_path = sanitize_key($blog_title);
if(domain_exists($site->domain, $site->path.$blog_path, $site->id)) continue;
$blog_id = wpmu_create_blog($site->domain, $site->path.$blog_path, $blog_title, 0, \'\', $site->id);
echo "Created - {$blog_id}";
$blog_count--;
}
我无法在所有博客上正确设置路径。在这种情况下,5个博客中只有2个工作正常。
$site-domain
是“localhost”$site->path.$blog_path
是“/wpmutest/thenameofblog/”
(这不是子域安装)
当我去编辑它们时,“同时更新siteurl和主页”选项在有问题的博客上未选中,我无法更新它(在我按save后不会更改)。似乎没有创建数据库表。
我是做错了什么,还是这是一个bug?
SO网友:onetrickpony
显然是一个全局变量is not properly updated. 我根据blackriver的回复找到了修复方法here, 虽然有点难看,但效果不错:
add_action(\'switch_blog\', \'fix_wpmu_create_blog\', 10, 2);
function fix_wpmu_create_blog($new_blog_id, $old_blog_id){
global $wpdb, $wp_queries;
if($wp_queries && defined(\'FIX_WPMU_CREATE_BLOG\')){
$old_pattern = $wpdb->base_prefix.$old_blog_id.\'_\';
$new_pattern = $wpdb->base_prefix.$new_blog_id.\'_\';
$wp_queries = str_replace($old_pattern, $new_pattern, $wp_queries);
//echo \'<pre>\';
//print_r($wp_queries);
//echo \'</pre>\';
}
}
以及
define(\'FIX_WPMU_CREATE_BLOG\', true);
在使用此函数的代码中的某个地方。
如果有人有更好的解决方案,请发布它,以便我可以接受答案:)