Я должен удалить некоторые поля профиля со страницы «Профиль» в соответствии с ролями пользователей. Для снятия палитры цветов я использовал remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")
. Я хочу удалить эти поля:
- кличка
- Отображать имя публично как
- AIM, Yahoo, Google Talk и О себе
- Раздел «Показать панель администратора» вместе с 2 флажками
Я просмотрел файл 'user-edit.php', чтобы увидеть, есть ли какие-либо действия / фильтры, которые позволяют мне это делать, но, похоже, нет. Может кто-нибудь сказать мне, как это сделать? Любая помощь будет оценена. Благодарность
РЕДАКТИРОВАТЬ: Спасибо @helenhousandi за ответ. Я уже сделал это таким образом, хотя.
<?php
add_action('admin_footer-profile.php', 'remove_profile_fields');
function remove_profile_fields()
{
if(current_user_can('custom_role'))
{ ?>
<script type="text/javascript">
jQuery("h3:contains('Personal Options')").next('.form-table').remove();
jQuery("h3:contains('Personal Options')").remove();
jQuery("h3:contains('About Yourself')").next('.form-table').remove();
jQuery("h3:contains('About Yourself')").remove();
</script>
<?php }
}
?>
Я знаю, что это немного дольше, но это сработало! Я думаю, что пойду с ответом @ helenhousandi.
functions.php
или файл плагина. Пока крючки верны, он будет работать в любом месте.Ответы:
Для фильтра контактных методов
user_contactmethods
:источник
Хотя
user_contactmethods
фильтр является одним из немногих для экрана профиля пользователя, так как другие поля не требуются в WordPress, вы можете использовать jQuery.hide()
и.remove()
эффективно избавиться от ненужных без сложностей с точки зрения сохранения информации. , Конечно, человек без JS все равно их увидит, но это небольшое меньшинство, и я предполагаю, что изменяющаяся там информация на самом деле ни на что не повлияет.Пример удаления целой части личных настроек (показать админ-панель и цветовую схему). Я знаю, что это не то, что вы ищете, просто хотел бы дать вам быстрый пример, который я имею под рукой:
Также обратите внимание на опцию Show Admin Bar: в 3.3 панель администратора становится заголовком и, следовательно, не может быть включена или выключена, поэтому о ней не стоит беспокоиться.
Я обновил пример кода, чтобы он был более точным и полным. Там были остатки.
источник
profile.php
. Мне также нужно было сделать это для определенной пользовательской роли, определенной в моей системе. Обновление моего вопроса с ответом.$("#nickname,#display_name").parent().parent().remove();
Поскольку для этого, похоже, нет подходящего php-хука, я в итоге скрыл поля с помощью CSS, а затем удалил их с помощью JS.
источник
С форума поддержки WordPress вы можете сделать удаление с помощью PHP. Это удаляет раздел О себе:
Код заменяет заголовок «About Yourself» на «Password», а затем удаляет все, что находится между этой и следующей таблицей, которую он находит (которая является таблицей паролей).
Также плагин WP Hide Dashboard выполняет аналогичную замену jQuery, если вы хотите его расширить.
источник
admin_head-profile.php
иadmin_footer-profile.php
вместо этогоБЫТЬ ОСТОРОЖЕН!!
1) Удаление поля может быть не очень хорошим , как при обновлении, если вы не отправите необходимые поля в ловушку обновления WORDPRESS, тогда для этих полей могут быть установлены пустые значения! (например, при отправке формы должно существовать, т. е.
<input name="username".../>
)Я думаю, что лучше скрывать от пользователей только визуально, с помощью jquery,
.hide();
а не с.remove();
кодом EXAMPLE, чтобы скрыть поля « DISPLAY NAME » и « NICKNAME »:
2) Чтобы скрыть админ-бар, есть специальная опция в меню WordPress (в настройках) . для пользовательского кода, например
источник
использование
и добавить
до JavaScript.
источник
Там нет фильтра, чтобы отключить их. Посмотрите на source (
/wp-admin/user-edit.php
), когда вам нужно сделать что-то подобное. Вы можете скрыть их с помощью JS, но их все равно можно сделать видимыми, а значения обновляются в POST.Единственный жизнеспособный вариант - взломать ядро самостоятельно. Просто убедитесь, что вы обрабатываете обновление и игнорируете эти поля в POST.
источник