В WordPress по умолчанию в профиле пользователя есть множество полей, которые могут не использоваться на вашем сайте, но занимают место и создают лишний шум в админке. Особенно это актуально для сайтов с большим количеством пользователей и кастомных ролей, где нужно упростить интерфейс и повысить удобство работы. В этой статье мы подробно разберём, как удалить или скрыть неиспользуемые поля профиля в WordPress с помощью кода и плагинов.
Почему важно удалять неиспользуемые поля профиля
Многие поля профиля не нужны для конкретных сайтов. Например, поля AIM, Jabber, Yahoo IM давно устарели и редко используются. Их наличие усложняет форму редактирования, отвлекает пользователей и администраторов. Удаление таких полей помогает:
- Сократить количество информации, которую нужно заполнять;
- Упростить интерфейс профиля;
- Уменьшить вероятность ошибок при заполнении;
- Повысить скорость загрузки страниц профиля за счёт уменьшения объёма формы.
Кроме того, если вы добавляете собственные поля или используете плагины, скрытие стандартных полей поможет избежать путаницы.
Как удалить стандартные поля профиля через хуки WordPress
В WordPress можно использовать хук user_contactmethods, чтобы изменить список полей контактов в профиле пользователя. Это самый простой способ убрать ненужные поля.
Пример кода для удаления стандартных полей AIM, Jabber, Yahoo IM
function wpcheck_remove_unused_profile_fields($contactmethods) {
unset($contactmethods['aim']);
unset($contactmethods['jabber']);
unset($contactmethods['yim']);
return $contactmethods;
}
add_filter('user_contactmethods', 'wpcheck_remove_unused_profile_fields');
Этот код нужно добавить в файл functions.php вашей темы или в собственный плагин. После активации поля AIM, Jabber и Yahoo IM исчезнут из профиля.
Удаление других полей профиля: расширенный подход
Для удаления других полей, таких как "Описание", "Сайт", "Адрес электронной почты" и т.п., стандартных хуков недостаточно. Для этого можно использовать JavaScript и CSS в админке или более сложный PHP-код с фильтрами и действиями.
Пример скрытия поля "Описание" с помощью CSS в админке
function wpcheck_hide_description_field() {
echo '<style>
#description { display:none !important; }
</style>';
}
add_action('admin_head-user-edit.php', 'wpcheck_hide_description_field');
add_action('admin_head-profile.php', 'wpcheck_hide_description_field');
Этот код добавляет CSS, который скрывает поле "Описание" на страницах редактирования профиля пользователя.
Удаление полей из формы с помощью JavaScript
Иногда удобнее полностью удалить элементы из DOM, чтобы они не занимали место и не мешали заполнению. Пример кода:
function wpcheck_remove_profile_fields_js() {
?>
<script>
document.addEventListener('DOMContentLoaded', function() {
var descField = document.getElementById('description');
if(descField) {
descField.closest('tr').remove();
}
var websiteField = document.getElementById('url');
if(websiteField) {
websiteField.closest('tr').remove();
}
});
</script>
<?php
}
add_action('admin_footer-user-edit.php', 'wpcheck_remove_profile_fields_js');
add_action('admin_footer-profile.php', 'wpcheck_remove_profile_fields_js');
Использование плагинов для управления полями профиля
Если вы хотите получить более гибкий интерфейс для управления полями профиля без кода, можно использовать плагины. Например:
- Advanced Custom Fields (ACF) — позволяет добавлять и настраивать поля профиля, а стандартные поля можно скрывать кодом;
- User Profile Fields Manager — специализированный плагин для управления стандартными и пользовательскими полями;
- Clearfy Pro из набора https://wpshop.ru/plugins/clearfy/ — содержит опции отключения стандартных ненужных функций и полей WordPress, включая поля профиля.
Выбор плагина зависит от ваших задач и предпочтений. Если нужен быстрый результат — лучше использовать код, если планируете масштабные изменения — плагины.
Полное удаление полей профиля для кастомных ролей
Если на сайте используются кастомные роли пользователей, иногда нужно не просто скрыть поля, а полностью убрать их сохранение и вывод. Для этого можно применить фильтр show_user_profile и edit_user_profile и работать с HTML формы вручную.
Пример удаления поля "Описание" только для роли "subscriber"
function wpcheck_conditional_remove_description($user) {
if (in_array('subscriber', $user->roles)) {
remove_action('show_user_profile', 'wp_profile_description_field');
remove_action('edit_user_profile', 'wp_profile_description_field');
}
}
add_action('show_user_profile', 'wpcheck_conditional_remove_description');
add_action('edit_user_profile', 'wpcheck_conditional_remove_description');
Этот пример демонстрирует общий подход, но для полного удаления поля нужно дополнительно переопределить форму профиля.
Заключение по практике удаления полей
Удаление неиспользуемых полей профиля в WordPress — важная задача для оптимизации пользовательского интерфейса и повышения удобства работы. В большинстве случаев достаточно использовать фильтр user_contactmethods для удаления стандартных контактных полей и дополнительно скрывать или удалять другие поля с помощью CSS и JavaScript в админке. Для более сложных задач можно применять плагины или писать кастомные решения.
Если хотите быстро и безопасно отключить ненужные функции, обратите внимание на плагин Clearfy Pro, который позволяет управлять стандартными полями и другими элементами WordPress без правки кода.