我已经为中包含信息的用户定制了仪表板上的欢迎面板。然后我隐藏了“Disclose”按钮并添加了CSS,以使欢迎面板始终可见。使用“welcome\\u panel”挂钩。
这对于管理员来说效果很好,但对于其他用户(如编辑和作者),则不会显示欢迎面板。这并不是说管理面板被隐藏了,它没有包含在源代码中。
我需要找到一种方法,为每个用户而不仅仅是管理员包含欢迎面板代码。
刚在中找到以下内容wp-admin/index.php
. 因此,它将只显示用户是否可以编辑\\u theme\\u选项。
<?php if ( has_action( \'welcome_panel\' ) && current_user_can( \'edit_theme_options\' ) ) :
是否有方法编辑此操作或调用do\\u操作(“welcome\\u panel”);即使用户无法编辑\\u theme\\u选项?
最合适的回答,由SO网友:ptimson 整理而成
我就是这样解决的:
在函数中。php
// Custom Dashboard
function my_custom_dashboard() {
$screen = get_current_screen();
if( $screen->base == \'dashboard\' ) {
include \'admin/dashboard-panel.php\';
}
}
add_action(\'admin_notices\', \'my_custom_dashboard\');
仪表板面板。php
<!-- Hide Old Wrap with CSS -->
<style type="text/css">
div#wpcontent div.wrap {
display: none;
}
div#wpcontent div.my-dashboard {
display: block;
}
</style>
<!-- New Wrap with custom welcome screen-->
<div class="wrap mjp-dashboard">
<h2>Dashboard</h2>
<div id="welcome-panel" class="welcome-panel">
<?php wp_nonce_field( \'welcome-panel-nonce\', \'welcomepanelnonce\', false ); ?>
<?php //do_action( \'welcome_panel\' ); ?>
<div class="mjp-welcome-content">
<h3>Welcome, <?php echo $name; ?></h3>
<p class="about-description">Your role is...</p>
<div class="welcome-panel-column-container">
<div class="welcome-panel-column">
</div>
</div>
</div>
</div>
<div id="dashboard-widgets-wrap">
<?php wp_dashboard(); ?>
<div class="clear"></div>
</div><!-- dashboard-widgets-wrap -->
</div><!-- wrap -->
SO网友:s_ha_dum
正如您已经发现的,该面板的显示条件为hard-coded into a core file. 它并不意味着要更改,这意味着您可能正试图将面板用于它不打算用于的对象。这不是批评。这只会让事情变得更难。除了编辑核心文件之外,我看不到改变这种情况的方法,我不建议这样做。
您可以尝试运行welcome_panel
在其他钩子上的动作,like one of these, 例如,但我不希望它正常工作。如果你真的,真的需要welcome_panel
为每个人竞选这是你最好的选择,但我不抱希望。
你也可以给每个人edit_theme_options
能力,但这是个坏主意。想到这一点,我很惭愧
据我所知,您的选择非常有限,实际上可以归结为“核心编辑”。这是一条高维护路径。我建议你把你的用户信息放在其他地方,比如新的Dashboard Widget, 在a中Help screen, 或在admin bar.