Как удалить из профиля пользователя WordPress лишние поля

Admin CSS, JavaScript, PHP Обсудить

В профиле пользователя на WordPress очень много неактуальных полей. В дополнение к этому некоторые плагины добавляют свои поля, что делает эту страницу перегруженной и ужасно некрасивой. В статье привожу все известные мне и рабочие способы удаления.

Условно можно разбить удаление неугодных полей на четыре варианта. Рассмотрим их все. Коды нужно вставлять в файл functions.php своей темы на WordPress.

1. Удаление полей в профиле пользователя через CSS

Самый главный минус — не все элементы имеют уникальные ID или класс (class), за которые цепляется CSS. А значит убрать получится не всё.

Для примера уберём выбор схемы пользователя в профиле WordPress.

// Удаление из профиля пользователя лишних элементов
function hide_profile_css() {
    echo '
    <style type="text/css">
    .user-admin-color-wrap {
        display: none;
    }
    </style>
    ';
}
add_action('admin_head','hide_profile_css');

2. Удаление полей посредством встроенных функций WordPress

Отличное и готовое решение. Из минусов не всё можно удалить, а только то, что было изначально задумано.

/* = Удаляем из профиля пользователя элементы
стандартным способом
----------------------------------------- */

function remove_profile_fields_contactmethods( $contactmethods ) {
    $contactmethods[ 'snup_vkontakte' ] = 'url ВКонтакте'; // добавляем ВКонтакте.
    $contactmethods[ 'snup_facebook' ] = 'url Facebook'; // добавляем Facebook.
    $contactmethods[ 'snup_twitter' ] = 'url Twitter'; // добавляем Twitter.
    return $contactmethods; // Возвращаем результат
}
add_filter( 'user_contactmethods', 'remove_profile_fields_contactmethods', 10, 1 );

С помощью этой же переменной $contactmethods можно и добавить значения, но в этой статье не об этом. Остальные unset можно найти на просторах интернета. К сожалению, полезных не так много. С её помощью нельзя отключить поля добавленные плагинами.

Ещё один пример. Удаление цветовой схемы из первого пункта, но уже посредством php.

function unset_profile_colorcheme() {
  global $_wp_admin_css_colors;
  $_wp_admin_css_colors = 0;
}
add_action('admin_head', 'unset_profile_colorcheme');

3. Удаление непредусмотренных для удаление полей с помощью PHP

Отличный способ, если хорошо разбираться в php, потому что многие элементы также не имеют классы и ID или другие хорошо понятные структуры, за которые можно зацепиться.

Код для удаления полей. Можно удалить все заголовки H2, H3 или элементы li. Для этого нужно просто добавить в код ниже: «li» или «h3»

/* = Удаляем из профиля пользователя элементы
непредусмотренные встроенными функциями
----------------------------------------- */

function remove_profile_fields_selectors() {

    $delete = array(

        // Цветовая схема
        "tr.user-admin-color-wrap",

        // Горячие клавиши
        "tr.user-comment-shortcuts-wrap",

        // Основной язык сайта
        "tr.user-language-wrap",
    );

    $selectors = implode(", ", $delete);

    echo "<style>{$selectors}{display:none;}</style>"; ?>

  <?php
}
add_action('admin_head','remove_profile_fields_selectors');

Пример удаления с помощью PHP, из профиля пользователя, заголовка и содержимого плагина MashShare. Одновременно удаляем заголовок и одну часть таблицы плагина Default Category For New Posts.

/* = Удаляем из профиля заголовки плагинов
и их поля (получается не для всех плагинов)
----------------------------------------- */

function remove_profile_fields($delete) {

    $titles = array(
    '#<h3>MashShare Social Media Integration<\/h3>#',
    '/(<table[^>]*>)(.*?)Twitter Username(.*?)(<\/table>)/i',

    '#<h3>Default Category For New Posts<\/h3>#',

    '/(<th.*scope="row">)Categories(<\/th>)/i',
    );

    $delete=preg_replace($titles,'',$delete,1);

    return $delete;
}

function remove_profile_fields_start() {
    ob_start("remove_profile_fields");
}

add_action('admin_head', 'remove_profile_fields_start');

Иногда сложно удалить какой-то элемент на страницы с помощью PHP, потому что не понятно как за него зацепиться. Есть более подробная статья о регулярных выражениях.

4. Удаление полей с помощью JavaScript

Самый крутой (если бы не было минусов) и удобный способ удаления. Небольшой код и огромные возможности JavaScript творят чудеса. С его помощью можно легко прятать абсолютно любые элементы на странице.

К сожалению есть один жирный минус такого способа. Если у пользователя будет отключен JavaScript, то все спрятанные элементы будут отображены. С другой стороны, сложно найти пользователя, который решил отключить его у себя в браузере.

Так как способ прятать элементы JavaScript-ом имеют вышеперечисленный недостаток, будем его использовать только в самом крайнем случае. А именно тогда, когда спрятать элементы другим способ или нельзя или непонятно как.

Будем использовать команду jQuery .hide().

В примере ниже скрываем заголовок h3 в котором содержится название данное в скобках. И полностью скрываем таблицу со всеми его элементами, если в ней находится определенное слово или слова.

/* = Удаляем из профиля пользователя
оставшиеся элементы с помощью JavaScript
----------------------------------------- */

add_action('admin_head','hide_personal_options');
function hide_personal_options() { ?>
    <script>
    jQuery(document).ready(function($) {
        // Скрываем плагин Default Category
        $("h3:contains('Default Category For New Posts')").hide();
        $("table:contains(' Без рубрики')").hide();

        // Скрываем плагин mashshare
        $("h3:contains('MashShare Social Media Integration')").hide();
        $("table:contains('Twitter Username')").hide();
    });
    </script>
<?php
}

В результате всех этих действий профиль пользователя становится чистым и аккуратным.

English Query (запросы по теме на английском языке)

How to remove labels from profile users wordpress

Remove fields in Profile users page

Hide or Disable WordPress user profile fields

Remove personal Options in WordPress Admin Profile User Page

How to remove action hook by Plugin in Profile User Page

Привет. Ты находишься на моём сайте. Я разработчик. Здесь я делюсь своими наработками и знаниями. Спрашивай в комментариях, если тебе что-то не понятно или пиши, если есть что добавить.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи: "Как удалить из профиля пользователя WordPress лишние поля"
Если вам нужно добавить участок кода ставьте его между тегами <code></code>