有时插件或主题需要在WordPress仪表板中向用户显示通知。 使用admin_notices挂钩很容易,它会在屏幕顶部显示一个标准的消息框。如下图:

去除wordpress后台管理员通知方法教程插图
显示标准通知写法如下:

function my_admin_notice(){
echo '<div class="updated">
<p>I am a little yellow notice.</p>
</div>';
}
add_action('admin_notices', 'my_admin_notice');

由于该div被分类为“updated”,通知将显示为黄色。 如果班级更改为“error”,则显示为红色。

那么如何禁止通知?

通过多一点工作,也可以显示通知保持存在状态,直到用户点击忽略为止。 这可能是确保用户看到该消息的好方法,但也不会让它感到恼火。

以下示例是从AddThis插件改编而来的。 我也在选项框架中使用类似的东西。

如果用户点击隐藏通知,则会将其偏好保存在用户元中。代码如下:

<pre>/* Display a notice that can be dismissed */

add_action('admin_notices', 'example_admin_notice');

function example_admin_notice() {
global $current_user ;
$user_id = $current_user->ID;
/* Check that the user hasn't already clicked to ignore the message */
if ( ! get_user_meta($user_id, 'example_ignore_notice') ) {
echo '<div class="updated"><p>';
printf(__('This is an annoying nag message. Why do people make these? | <a href="%1$s">Hide Notice</a>'), '?example_nag_ignore=0');
echo "</p></div>";
}
}

add_action('admin_init', 'example_nag_ignore');

function example_nag_ignore() {
global $current_user;
$user_id = $current_user->ID;
/* If user clicks to ignore the notice, add that to their user meta */
if ( isset($_GET['example_nag_ignore']) && '0' == $_GET['example_nag_ignore'] ) {
add_user_meta($user_id, 'example_ignore_notice', 'true', true);
}
}</pre>

 

仅在某些管理页面上显示通知

如果可能,将通知的目标定位在用户需要查看它们的特定页面上。 你可以通过使用$ pagenow全局变量来实现。

例如,此通知只会出现在插件页面上:

<pre>function my_admin_notice(){
global $pagenow;
if ( $pagenow == 'plugins.php' ) {
echo '<div class="updated">
<p>This notice only appears on the plugins page.</p>
</div>';
}
}
add_action('admin_notices', 'my_admin_notice');</pre>

显示通知前检查用户角色

通知应该只显示给实际上可以对它们做些什么的用户。 例如,如果用户无法编辑主题选项,则显示关于它的通知毫无意义。

以下是您可能想要执行的一些常见角色检查:

<pre>if ( current_user_can( 'install_plugins' ) )
if ( current_user_can( 'manage_options' ) )
if ( current_user_can( 'edit_theme_options' ) )</pre>

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注