从配置文件中删除个人选项部分

时间:2012-04-20 作者:dev-jim

我想在中隐藏/删除个人选项Your Profile (wp-admin/profile.php) 管理页面。

我知道这方面存在解决方案,但我知道他们使用jQuery来隐藏这一部分。这是可行的,但当用户在浏览器中禁用JavaScript时,它将再次显示。因此,删除个人选项不是一种正确的方式。

有没有办法从页面的HTML源中删除“个人选项”部分?这意味着没有jQuery或CSS攻击,也没有核心文件修改。

8 个回复
SO网友:RafaSashi

接受的答案不适用于4.8

以下是最新的简化代码,可用于任何版本:

        // removes admin color scheme options

        remove_action( \'admin_color_scheme_picker\', \'admin_color_scheme_picker\' );

        //Removes the leftover \'Visual Editor\', \'Keyboard Shortcuts\' and \'Toolbar\' options.

        add_action( \'admin_head\', function () {

            ob_start( function( $subject ) {

                $subject = preg_replace( \'#<h[0-9]>\'.__("Personal Options").\'</h[0-9]>.+?/table>#s\', \'\', $subject, 1 );
                return $subject;
            });
        });

        add_action( \'admin_footer\', function(){

            ob_end_flush();
        });     

SO网友:KornDev

我只是想弄明白,然后找到了这个答案。Cor van的上述代码不再有效,但只要稍微更改add\\u操作,就可以了。

您只需将最后两行更改为:

add_action( \'admin_head-profile.php\', \'cor_profile_subject_start\' );
add_action( \'admin_footer-profile.php\', \'cor_profile_subject_end\' );

add_action( \'admin_head-user-edit.php\', \'cor_profile_subject_start\' );
add_action( \'admin_footer-user-edit.php\', \'cor_profile_subject_end\' );
因此,最终的代码如下所示:

if ( ! function_exists( \'cor_remove_personal_options\' ) ) {
  /**
   * Removes the leftover \'Visual Editor\', \'Keyboard Shortcuts\' and \'Toolbar\' options.
   */
  function cor_remove_personal_options( $subject ) {
    $subject = preg_replace( \'#<h3>Personal Options</h3>.+?/table>#s\', \'\', $subject, 1 );
    return $subject;
  }

  function cor_profile_subject_start() {
    ob_start( \'cor_remove_personal_options\' );
  }

  function cor_profile_subject_end() {
    ob_end_flush();
  }
}
add_action( \'admin_head-user-edit.php\', \'cor_profile_subject_start\' );
add_action( \'admin_footer-user-edit.php\', \'cor_profile_subject_end\' );

SO网友:Jason Vasilev

多亏了@Per的评论,我才使其适用于4.5.2

    // removes admin color scheme options
    remove_action( \'admin_color_scheme_picker\', \'admin_color_scheme_picker\' );

    if ( ! function_exists( \'cor_remove_personal_options\' ) ) {
        /**
        * Removes the leftover \'Visual Editor\', \'Keyboard Shortcuts\' and \'Toolbar\' options.
        */
        function cor_remove_personal_options( $subject ) {
            $subject = preg_replace( \'#<h2>Personal Options</h2>.+?/table>#s\', \'\', $subject, 1 );
            return $subject;
        }

        function cor_profile_subject_start() {
            ob_start( \'cor_remove_personal_options\' );
        }

        function cor_profile_subject_end() {
            ob_end_flush();
        }
    }
    add_action( \'admin_head\', \'cor_profile_subject_start\' );
    add_action( \'admin_footer\', \'cor_profile_subject_end\' );`

SO网友:Allen Sutton

更新3.9,以下工作:

add_action( \'admin_head\', \'cor_profile_subject_start\' );
add_action( \'admin_footer\', \'cor_profile_subject_end\' );

SO网友:Grant

这是我的CSS解决方案,在Wordpress 4.9.8中测试

remove_action( \'admin_color_scheme_picker\', \'admin_color_scheme_picker\' );
add_action( \'admin_head\', function(){
    ob_start(); ?>
    <style>
        #your-profile > h2,
        .user-rich-editing-wrap,
        .user-syntax-highlighting-wrap,
        .user-comment-shortcuts-wrap,
        .user-admin-bar-front-wrap {
            display: none;
        }
    </style>
    <?php ob_end_flush();
});

SO网友:Emanuele Feliziani

我只是想澄清一下,由于硬编码的原因,该代码对WordPress的本地化版本不起作用Personal Options 一串我想不出任何简单的解决办法,但欢迎提出建议。

我本想将此作为评论添加,但我没有足够的声誉添加评论。

我还借此机会重新粘贴为WordPress 3.9版更新的整个代码。

这是:

// removes the `profile.php` admin color scheme options
remove_action( \'admin_color_scheme_picker\', \'admin_color_scheme_picker\' );

if ( ! function_exists( \'cor_remove_personal_options\' ) ) {
  /**
   * Removes the leftover \'Visual Editor\', \'Keyboard Shortcuts\' and \'Toolbar\' options.
   */
  function cor_remove_personal_options( $subject ) {
    $subject = preg_replace( \'#<h3>Personal Options</h3>.+?/table>#s\', \'\', $subject, 1 );
    return $subject;
  }

  function cor_profile_subject_start() {
    ob_start( \'cor_remove_personal_options\' );
  }

  function cor_profile_subject_end() {
    ob_end_flush();
  }
}
add_action( \'admin_head\', \'cor_profile_subject_start\' );
add_action( \'admin_footer\', \'cor_profile_subject_end\' );
同样,如果您事先知道WP安装的语言,请更改Personal Options 字符串转换为您的语言的本地化版本,例如意大利语,您将用Impostazioni personali.

SO网友:user3252207

通过使用

$subject = preg_replace( \'#<h3>\'.__("Personal Options").\'</h3>.+?/table>#s\', \'\', $subject, 1 );
在cor\\u remove\\u personal\\u options函数中,它也是本地化的。

SO网友:K. Tromp

我在以下网站上找到了此解决方案:https://premium.wpmudev.org/blog/how-to-simplify-wordpress-profiles-by-removing-personal-options/?ptm=c&utm_expid=3606929-108.O6f5ypXuTg-XPCV9sY1yrw.2

function hide_personal_options(){ 
    echo "\\n" . \'<script type="text/javascript">jQuery(document).ready(function($) { 
    $(\\\'form#your-profile > h3:first\\\').hide(); $(\\\'form#your-profile > 
    table:first\\\').hide(); $(\\\'form#your-profile\\\').show(); });</script>\' . "\\n"; 
} 
add_action(\'admin_head\',\'hide_personal_options\');
如果您想更具体或删除更多内容,请查看此处:https://isabelcastillo.com/hide-personal-options-wordpress-admin-profile

您可以将这些行添加到函数中。

结束

相关推荐