原始代码(许可证:MIT)
以下代码已更改
from my "Meta Box Order debug" plugin (GitHub上提供Gist)。可以在代码注释中找到解释。
好处这个解决方案的好处是,它不会改变DB值,而是动态地改变数据。这样,您可以随时恢复更改和/或使用其他用户作为“数据源”。
另一个好处是,您可以添加一个简单用作蓝图的虚拟用户。每次您想要更改每个人的布局时,只需使用此用户登录并更改仪表板上的元框即可。这样,您就可以更改配置,而无需编写一行代码。
@TODO
您必须更改用户ID-这标记为
@TODO
- 到实际要从中克隆/用作“源”的用户ID。
<?php
namespace WPSE;
/**
* Plugin Name: (#144583) Clone Meta Box Order
*/
add_filter( \'get_user_metadata\', \'WPSE\\disableMetaBoxOrder\', 10, 4 );
function disableMetaBoxOrder( $abort, $userID, $key, $single )
{
// Too early: abort
if (
! function_exists( \'get_current_screen\' )
OR NULL === get_current_screen()
OR ! property_exists( get_current_screen(), \'base\' )
)
return $abort;
// Don\'t trigger on the wrong screens
if ( \'dashboard\' !== get_current_screen()->base )
{
remove_filter( current_filter(), __FUNCTION__ );
return $abort;
}
$target = \'meta-box-order_dashboard\';
// This is the part that actually alters/clones the user data
// Trigger on default as on site specific settings
if (
$key === $target
OR $key === $GLOBALS[\'wpdb\']->prefix.$target
)
{
// Prevent endless loop
remove_filter( current_filter(), __FUNCTION__ );
return get_user_meta(
# @TODO Replace the next line with the user ID
# that you want to clone from (the origin)
get_current_user_id(),
$target,
TRUE
);
}
return $abort;
}