В профиле пользователя на 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_twitter' ] = 'url Twitter'; // добавляем Twitter.
return $contactmethods; // Возвращаем результат
}
add_filter( 'user_contactmethods', 'remove_profile_fields_contactmethods', 10, 1 );
С помощью этой же переменной $contactmethods можно и добавить значения, но в этой статье не об этом. Остальные unset можно найти на просторах интернета. К сожалению, полезных не так много. С её помощью нельзя отключить поля добавленные плагинами.
Ещё один пример. Удаление цветовой схемы из первого пункта, но уже посредством php.
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
}
В результате всех этих действий профиль пользователя становится чистым и аккуратным.