Удалить раздел «Личные настройки» из профиля

11

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

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

Есть ли способ удалить раздел «Личные параметры» из источника HTML страницы? Это означает отсутствие jQuery или CSS-хаков, или модификацию файла ядра.

DEV-джим
источник
Просто добавим, что если у пользователя отключен JavaScript, есть намного больше, что он не сможет использовать в Wordpress. Но все же, делать это на стороне сервера гораздо лучше, когда это возможно :)
Тим Мэлоун
Будьте осторожны - смотрите ответ: wordpress.stackexchange.com/a/162277/33667
T.Todua
1
Возможный дубликат Как удалить эти поля из раздела «Профиль»?
Т.Тодуа

Ответы:

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.phpи admin_footer-profile.phpв ядре. идеи? Спасибо большое.
Ана Пан,
Вы уверены, что это не работает? Я только использовал это на новой установке, и это работало хорошо. Обратите внимание, что вы должны отредактировать приведенный выше код, если вы используете другой язык. Кроме того , здесь некоторая информация о admin_head-profile.phpи admin_footer-profile.php: codex.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' );
KornDev
источник
Хорошее продолжение, это изменение к оригинальному коду работало отлично.
Даниэль
Не могли бы вы сказать мне, как я могу удалить больше элементов <h3>? Какие модификации вышеуказанного кода мне нужны?
Фабиан
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();
        });     
RafaSashi
источник
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

Я просто хотел уточнить, что код не будет работать для локализованных версий 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.

Эмануэле Фелизиани
источник
0

Используя

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

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

user3252207
источник
0

Я нашел это решение по адресу : https://premium.wpmudev.org/blog/how-to-simplify-wordpress-profiles-by-removing-personal-options/?ptm=c&utm_expid=3606929-108.O6f5ypXuTg-XPCV9sY1yrw 0,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 никогда не было хорошей практикой ...
Маркос Бурке