从个人资料中删除“个人选项”部分


11

我想在“个人资料”wp-admin/profile.php)管理页面中隐藏/删除“个人选项” 。

我知道存在解决方案,但是我使用jQuery来隐藏此部分。此方法有效,但是当用户在其浏览器中禁用JavaScript时,它将再次显示。因此,这不是删除“个人选项”的正确方法。

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


只是要补充一点,如果用户禁用了JavaScript,还有很多他们将无法在Wordpress中使用。但是,如果可能的话,在服务器端这样做会更好:)
Tim Malone


Answers:


24

这应该可以解决问题

// 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-profile.php', 'cor_profile_subject_start' );
add_action( 'admin_footer-profile.php', 'cor_profile_subject_end' );

另外,不要忘记将您之前的问题标记为已解决:)


这太棒了,但是如何使它适用于WP 3.4?仅删除配色方案选择器。大概是因为我似乎找不到文件admin_head-profile.phpadmin_footer-profile.php核心。想法?非常感谢。
安娜·班

您确定它不起作用吗?我只是在一个新的安装上使用了它,它工作正常。请注意,如果您使用其他语言,则必须编辑以上代码。此外,这里是关于一些信息admin_head-profile.phpadmin_footer-profile.phpcodex.wordpress.org/Plugin_API/...

@CorvanNoorloos感谢您,有什么办法可以让他们检查是否要显示工具栏吗?
Greenhoe

6

只是想弄清楚这一点,并遇到了这个答案。上面的Cor van编写的代码不再起作用,但是对add_action稍作更改,就可以了。

您需要做的就是将以下两行更改为:

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' );

很好的跟进,对原始代码的更改非常有效。
丹尼尔(Daniel)

您能告诉我如何删除更多的<h3>元素吗?我需要对上述代码进行哪些修改?
Fabian

5

接受的答案不适用于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();
        });     

1
+1但与接受的答案存在相同的问题,字符串需要本地化才能与非英语语言一起使用。
马克·卡普伦

@MarkKaplun没错!我做了改变。
RafaSashi

3

感谢@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' );`

2

更新为3.9,可使用以下功能:

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

1

这是我的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();
});

0

我只是想澄清一下,由于硬编码的Personal Options字符串,该代码不适用于WordPress的本地化版本。我在这里没有想到任何简单的解决方案,但是欢迎提出建议。

我将其添加为注释,但是我没有足够的声誉来添加注释。

我也借此机会重新粘贴针对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


0

通过使用

$subject = preg_replace( '#<h3>'.__("Personal Options").'</h3>.+?/table>#s', '', $subject, 1 );

在cor_remove_personal_options函数中,它也已本地化。


0

我在以下位置找到了此解决方案: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

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


用Javascript删除它永远不是一个好习惯……
Marcos Buarque
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.