Удаление раздела Personal Options из профиля

20 апр. 2012 г., 11:35:42
Просмотры: 20.7K
Голосов: 15

Я хочу скрыть/удалить раздел Personal Options на странице Ваш профиль (wp-admin/profile.php) в админ-панели.

Я знаю, что существуют решения для этого, но они используют jQuery для скрытия этого раздела. Это работает, но когда у пользователя отключен JavaScript в браузере, раздел снова появляется. Поэтому это не является правильным способом удаления Personal Options.

Есть ли способ удалить раздел Personal Options из исходного HTML кода страницы? Имеется в виду без использования jQuery или CSS-хаков, или модификации основных файлов.

3
Комментарии

Хочу добавить, что если у пользователя отключен JavaScript, он не сможет использовать многое в WordPress. Но всё же, по возможности, лучше делать это на стороне сервера :)

Tim Malone Tim Malone
9 мая 2016 г. 06:55:11

Будьте осторожны — см. ответ: https://wordpress.stackexchange.com/a/162277/33667

T.Todua T.Todua
4 дек. 2018 г. 13:20:13

Возможный дубликат вопроса Как удалить эти поля из раздела "Профиль"?

T.Todua T.Todua
4 дек. 2018 г. 13:20:42
Все ответы на вопрос 10
4
25

Это должно сработать

// удаляет настройки цветовой схемы в `profile.php`
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

if ( ! function_exists( 'cor_remove_personal_options' ) ) {
  /**
   * Удаляет оставшиеся опции 'Визуальный редактор', 'Горячие клавиши' и 'Панель инструментов'.
   */
  function cor_remove_personal_options( $subject ) {
    $subject = preg_replace( '#<h3>Персональные настройки</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' );

Также, не забудьте отметить предыдущие вопросы как решенные :)

20 апр. 2012 г. 19:13:09
Комментарии

это потрясающе, но как заставить это работать в WP 3.4? удален только выбор цветовой схемы. вероятно, потому что я не могу найти файлы admin_head-profile.php и admin_footer-profile.php в ядре. идеи? большое спасибо.

Ana Ban Ana Ban
26 июн. 2012 г. 14:20:59

Вы уверены, что это не работает? Я только что использовал это на новой установке, и все работало нормально. Обратите внимание, вам нужно отредактировать приведенный выше код, если вы используете другой язык. Также вот некоторая информация о admin_head-profile.php и admin_footer-profile.php: http://codex.wordpress.org/Plugin_API/Action_Reference#Administrative_Actions

User User
26 июн. 2012 г. 21:46:05

@CorvanNoorloos Спасибо за это, есть ли способ оставить опцию, позволяющую пользователям выбирать, показывать ли им панель инструментов или нет?

Greenhoe Greenhoe
17 мая 2015 г. 04:46:23

моя текущая версия 6.0.2 использует h2 вместо h3, возможно, потребуется обновить preg_replace для этого

Kender Kender
22 сент. 2022 г. 18:53:01
2
11

Принятый ответ не работает с версией 4.8

Вот актуальный и упрощенный код, который должен работать с любой версией:

        // удаляет опции выбора цветовой схемы админки
        remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

        // Удаляет оставшиеся опции 'Визуальный редактор', 'Горячие клавиши' и 'Панель инструментов'
        add_action( 'admin_head', function () {
            ob_start( function( $subject ) {
                $subject = preg_replace( '#<h[0-9]>'.__("Персональные настройки").'</h[0-9]>.+?/table>#s', '', $subject, 1 );
                return $subject;
            });
        });

        add_action( 'admin_footer', function(){
            ob_end_flush();
        });     
16 июн. 2017 г. 16:41:57
Комментарии

+1, но та же проблема, что и с принятым ответом — строка должна быть локализована, чтобы работать с неанглийскими языками.

Mark Kaplun Mark Kaplun
16 июн. 2017 г. 17:36:00

@MarkKaplun совершенно верно! Я внес изменение.

RafaSashi RafaSashi
16 июн. 2017 г. 18:50:41
2

Как раз пытался разобраться с этим и наткнулся на этот ответ. Приведенный выше код от 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' ) ) {
  /**
   * Удаляет оставшиеся опции 'Визуальный редактор', 'Горячие клавиши' и 'Панель инструментов'.
   */
  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' );
24 мая 2013 г. 02:20:11
Комментарии

Отличное продолжение, это изменение исходного кода сработало идеально.

Daniel Daniel
13 февр. 2014 г. 04:31:38

Не могли бы вы подсказать, как я могу удалить больше элементов <h3>? Какие изменения в приведённом выше коде мне нужно внести?

Fabian Fabian
27 янв. 2016 г. 20:35:33
0

Благодаря комментарию от @Per мне удалось заставить это работать в версии 4.5.2

    // удаляет опции выбора цветовой схемы админки
    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

    if ( ! function_exists( 'cor_remove_personal_options' ) ) {
        /**
        * Удаляет оставшиеся опции 'Визуальный редактор', 'Горячие клавиши' и 'Панель инструментов'.
        */
        function cor_remove_personal_options( $subject ) {
            $subject = preg_replace( '#<h2>Персональные настройки</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' );`
7 июн. 2016 г. 14:50:45
0

Обновление для версии 3.9, следующий код работает:

add_action( 'admin_head', 'cor_profile_subject_start' );
add_action( 'admin_footer', 'cor_profile_subject_end' );
18 апр. 2014 г. 11:41:15
0

Вот моё решение на 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();
});
22 авг. 2018 г. 08:27:12
0

Хочу уточнить, что данный код не будет работать в локализованных версиях WordPress из-за жестко заданной строки Personal Options. Я не могу предложить простое решение этой проблемы, но буду рад любым предложениям.

Я бы добавил это как комментарий, но у меня недостаточно репутации для комментирования.

Также пользуюсь возможностью повторно опубликовать обновленный код для WordPress версии 3.9.

Вот он:

// удаляет опции выбора цветовой схемы в `profile.php` 
remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

if ( ! function_exists( 'cor_remove_personal_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' );

Повторюсь, если вы заранее знаете язык вашей установки WordPress, замените строку Personal Options на локализованную версию для вашего языка. Например, для итальянского нужно использовать Impostazioni personali.

9 авг. 2014 г. 20:29:08
0

Используя

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

в функции cor_remove_personal_options, это также локализовано.

3 сент. 2015 г. 19:17:41
1

Я нашел это решение на: 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

Вы можете просто добавить эти строки в функцию.

17 июл. 2017 г. 14:56:11
Комментарии

Удаление его с помощью Javascript никогда не является хорошей практикой...

Marcos Buarque Marcos Buarque
16 июл. 2018 г. 06:44:06
0

Я убираю только заголовок и использую CSS для скрытия первой таблицы...

Для меня в 2023 году это работает:

 // удаляет опции цветовой схемы админки
    remove_action( 'admin_color_scheme_picker', 'admin_color_scheme_picker' );

    if ( ! function_exists( 'cor_remove_personal_options' ) ) {
        /**
        * Удаляет оставшиеся опции 'Визуальный редактор', 'Горячие клавиши' и 'Панель инструментов'.
        */
        function cor_remove_personal_options( $subject ) {
           $subject = preg_replace( '#<h[0-9]>'.__("Персональные настройки").'</h[0-9]>#s', '<style>#your-profile>.form-table {display:none} #your-profile>.form-table ~ .form-table {display:block}</style>', $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 февр. 2023 г. 15:31:54