【问题标题】:Show css to super admin only仅向超级管理员显示 css
【发布时间】:2015-12-02 10:58:59
【问题描述】:

我的目标是在 WordPress 仪表板上使用 CSS 隐藏特定表格,对除超级管理员之外的所有用户隐藏。

<?php is_super_admin( $user_id ); ?>

add_action( 'admin_head', 'my_custom_function' );
function my_custom_function() {
 if ( ! current_user_can( 'update_core' ) ) {
   echo '<style>p.smush-status {
   display: none;
   }
   button.button.wp-smush-send  {
   display: none;
   }
   #smushit {
   display:none;
   }</style>';
 }
});

但是,当我将此代码添加到 mu-plugins 时,出现以下错误:

致命错误:调用未定义函数 wp_get_current_user() /home/.../public_html/domain.com/wp-includes/capabilities.php 上线 第1614章

capabilities.php 是 WordPress 的核心文件。

请您看看并告诉我如何改进此代码?

谢谢

【问题讨论】:

  • 你读过这个吗? 对于 #14024。
  • 我不喜欢 Wordpress,但简单地为非管理员使用 CSS 隐藏关键内容似乎不是正确的方法。无论如何,客户端都可以更改所有 CSS。如果你确定你想要这个,如何将一个类(“admin”)添加到层次结构中的一个元素并将所有其他元素引用为 CSS 选择器中的后代元素(例如“.admin #smushit”)?

标签: php css wordpress


【解决方案1】:

不要使用 css 隐藏管理仪表板的一部分,这是一个安全漏洞。 您必须使用主题functions.php中添加的功能取消设置它:

// Create the function to use in the action hook

function remove_dashboard_widgets() {


    global $wp_meta_boxes;

    // Remove the quickpress widget

    unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);

    // Remove the incomming links widget

    unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_incoming_links']);
} 

// Hoook into the 'wp_dashboard_setup' action to register our function
if(!is_admin()){
add_action('wp_dashboard_setup', 'remove_dashboard_widgets' );
}

编辑:不要编辑wordpress核心文件,你会因为更新而丢失一切。

【讨论】:

  • 谢谢 Bipbip,我不知道使用 css 隐藏管理仪表板的一部分是安全漏洞。那我就不会用这个了。然后我可以包装(?)来自插件的代码,调用以在仪表板中显示一些统计信息,只供超级管理员查看?
  • 检查该函数,它仅在用户不是管理员时调用,您可以将其粘贴到主题的 fonctions.php 中,如果您将参数替换为插件的参数,它应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 2014-02-28
  • 2020-01-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多