在创建新博客的过程中,我需要更新博客选项。我想更新选项,如主页、default\\u comment\\u status、default\\u ping\\u status permalinks结构等。。。
所以我创建了函数:
function setup_multisite_action($data){
$blog_id = (int) $data->blog_id;
update_blog_option($blog_id, \'home\', \'https://test.local\');
update_blog_option($blog_id, \'default_comment_status\', \'closed\');
update_blog_option($blog_id, \'default_ping_status\', \'closed\');
}
add_action( \'wp_insert_site\', \'setup_multisite_action\', 50, 1 );
但这行不通。我试着用钩子
wpmu_new_blog
实际上,在这种情况下,这是可行的!
function setup_multisite_action($blog_id){
update_blog_option($blog_id, \'home\', \'https://test.local\');
update_blog_option($blog_id, \'default_comment_status\', \'closed\');
update_blog_option($blog_id, \'default_ping_status\', \'closed\');
}
add_action( \'wpmu_new_blog\', \'setup_multisite_action\', 50, 1 );
但是!这个钩子是
deprecated 它告诉我
wp_insert_site
.
那么我做错了什么wp_insert_site
?
现在我真的不知道如何解决我的问题。我花了一些时间来寻找解决方案,但我没能找到,正确工作很重要。因为我要为新创建的博客更新更多内容,所以用户不必做(实际上他将无法做):(
最合适的回答,由SO网友:Sally CJ 整理而成
这个wpmu_new_blog
钩子确实不受欢迎,不应该使用;但是,它可以工作,因为它在新站点初始化后运行(请参见wp_initialize_site()
) 这意味着该站点的数据库表已经创建并使用默认选项填充。
因此,因为您正在更新网站的选项,如default_comment_status
, 那么你应该使用wp_initialize_site
hook 而不是wp_insert_site
:
add_action( \'wp_initialize_site\', \'setup_multisite_action\' ); // use this
//add_action( \'wp_insert_site\', \'setup_multisite_action\' ); // not this