是否在创建新博客期间更新博客选项?

时间:2020-10-12 作者:Isu

在创建新博客的过程中,我需要更新博客选项。我想更新选项,如主页、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 ?

现在我真的不知道如何解决我的问题。我花了一些时间来寻找解决方案,但我没能找到,正确工作很重要。因为我要为新创建的博客更新更多内容,所以用户不必做(实际上他将无法做):(

1 个回复
最合适的回答,由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

相关推荐

批量操作在单击时重定向到“options.php”页面(WP_LIST_TABLE)

我对WP\\U List\\U表格有问题。我正在学习一个关于互联网的教程(https://wpengineer.com/2426/wp_list_table-a-step-by-step-guide/) 因为我需要在插件页面上显示一个表。问题是批量操作不起作用,我已经尝试使用我刚才提到的链接提供的原始代码,并且我也尝试遵循另一个教程。但是,当我按下批量操作按钮时,wordpress会将我重定向到wp admin/options。php页面,无论我按哪个动作块。我不知道为什么会这样。