可以使用用户配置文件中的自定义元字段(仅对管理员可见)解决此问题,然后制作包含此元的单个仪表板小部件(仅在满足特定条件时可见)。
可以通过以下方式向用户配置文件页面添加字段:
Using this Q&A 隐藏非管理员用户的字段遵循Frank Bültge的教程:Add WordPress Dashboard Widgets
通过插件previous Answer 使用了另一个插件,但注释线程解释了更改
由于密码和维护良好,Advanced Custom Fields 非常方便。
2a)设置自定义用户字段
点击放大2b)管理员编辑用户/wp-admin/user-edit.php?user_id=7
2c)非管理员用户查看仪表板时,以下信息将显示(或不显示)每个用户一条个性化消息。
/**
* Add Dashboard Widget
*/
add_action(\'wp_dashboard_setup\', \'wpse_51591_wp_dashboard_setup\');
/**
* Only builds the Widget if the display message checkbox is enabled in the user editing screen
*/
function wpse_51591_wp_dashboard_setup()
{
global $current_user;
get_currentuserinfo();
$show_msg = get_field( \'user_message_enable\', \'user_\' . $current_user->ID );
$widget_title = \'Personal Messages to \' . $current_user->data->display_name;
if( $show_msg )
wp_add_dashboard_widget( \'wpse_user_personal_message\', $widget_title, \'wpse_51591_wp_dashboard_per_user\' );
}
/**
* Content of Dashboard Widget
* Shows the content of each user\'s custom message
*/
function wpse_51591_wp_dashboard_per_user()
{
global $current_user;
get_currentuserinfo();
$the_msg = get_field( \'user_message_text\', \'user_\' . $current_user->ID );
echo $the_msg;
}
Results in:
Bonus code
在ACF中添加一点用户体验:如果选中或未选中启用消息复选框,则显示/隐藏消息文本框
最好更改ACF配置中字段的顺序,首先是复选框,然后是文本框。add_action( \'admin_head-user-edit.php\', \'wpse_51591_acf_profile\' );
add_action( \'admin_head-user-new.php\', \'wpse_51591_acf_profile\' );
function wpse_51591_acf_profile()
{
?>
<script type="text/javascript">
jQuery(document).ready( function($)
{
/* Wait 1.4s for ACF to be ready */
setTimeout(function() {
// find our checkbox
var the_check = $(\'#acf-user_message_enable\').find(\'input:last\');
// default state
if( $(the_check).is(\':checked\') )
$(\'#acf-user_message_text\').fadeIn();
else
$(\'#acf-user_message_text\').fadeOut();
// live changes
$(the_check).change(function ()
{
if( $(this).is(\':checked\') )
$(\'#acf-user_message_text\').fadeIn();
else
$(\'#acf-user_message_text\').fadeOut();
});
}, 1400);
});
</script>
<?php
}