我正在尝试为我的多站点中的所有站点更新DB中选项的值,但没有成功,这是代码,在过去的2个小时里我一直在胡思乱想:
function simplifyit_upload_folder($blog_id){
switch_to_blog($blog_id);
update_option(\'uploads_use_yearmonth_folders\', false);
restore_current_blog();
}
add_action( \'update_wpmu_options\', \'simplifyit_upload_folder\' );
感谢@TheDeadMedic为我提供了过滤的答案,但我希望更新数据库中的值:
add_filter( \'option_uploads_use_yearmonth_folders\', \'__return_false\', 100 );
很抱歉,我想确保网络中的所有博客在YYYYMM上载选项中默认设置为0,但如果网络管理员希望对单个站点这样做,他/她可以通过WP网络面板覆盖它
SO网友:s_ha_dum
该字段以空值结尾:-(
如果您想做的是删除该值,就像您在该注释中所做的那样,那么您需要delete_option
, 或delete_site_option
. 后者似乎最合适。
function simplifyit_upload_folder(){
$current_site = get_current_site();
switch_to_blog($current_site->id);
delete_site_option(\'uploads_use_yearmonth_folders\');
restore_current_blog();
}
add_action( \'update_wpmu_options\', \'simplifyit_upload_folder\' );
我用过
get_current_site
获取博客ID,因为该钩子不传递该值。
我不完全确定你想要的钩子。它在admin中运行,并且只有在POST
数据--http://core.trac.wordpress.org/browser/trunk/wp-admin/network/settings.php#L69
根据对问题的编辑,听起来您希望wpmu_new_blog
钩子,以便在创建博客时设置您的值。之后,博客管理员可以对其进行更改,而您的代码不会进行干扰。
未测试(我现在在开发服务器上没有MU),但。。。
function simplifyit_upload_folder($blog_id){
// not 100% sure exactly what you need here; caveat emptor :)
update_option(\'uploads_use_yearmonth_folders\', false);
}
add_action( \'wpmu_new_blog\', \'simplifyit_upload_folder\' );