Пересмотренный и обновленный ответ:
Мы не можем использовать user_contactmethods
фильтр для удаления оболочки веб-сайта, поскольку этот фрагмент жестко закодирован в user-edit.php
файле, а не является частью фильтруемого цикла контактов пользователя , созданного с помощью:
wp_get_user_contact_methods( $profileuser )
Сокрытие с помощью CSS
Элемент строки сайта теперь имеет свой собственный .user-url-wrap
класс:
<tr class="user-url-wrap">
<th><label for="url"><?php _e('Website') ?></label></th>
<td>
<input type="url" name="url" id="url"
value="<?php echo esc_attr( $profileuser->user_url ) ?>"
class="regular-text code" />
</td>
</tr>
Ранее мы должны были использовать jQuery для нацеливания на родительскую строку #url
поля для удаления.
Но теперь мы можем легко настроить таргетинг на веб-сайт и скрыть его с помощью CSS:
function remove_website_row_wpse_94963_css()
{
echo '<style>tr.user-url-wrap{ display: none; }</style>';
}
add_action( 'admin_head-user-edit.php', 'remove_website_row_wpse_94963_css' );
add_action( 'admin_head-profile.php', 'remove_website_row_wpse_94963_css' );
Скрытие других полей
Есть похожие классы строк:
tr.user-{field}-wrap
доступно для полей:
admin-color,
comment-shortcuts,
admin-bar-front,
user-login,
role,
super-admin,
first-name,
last-name,
nickname,
display-name,
email,
description,
pass1,
pass2,
sessions,
capabilities,
...
включая все поля из динамических методов контактов с пользователем .
Здесь мы просто заменим {field}
деталь на соответствующее имя поля.
Скриншоты
Перед удалением строки сайта:
После удаления строки сайта:
.remove()
вместо.hide()
if
предложение с помощью теста возможностей. Это работаетfunctions.php
, но я думаю, что лучше иметь его в плагине, чтобы не потерять его при смене темы.apply_filters( "user_{$name}_label", $desc );
user-*-wrap
частей ;-) @BradDaltonЯ решил проблему с функциями ob_ и DOMDocument. Это лучше, чем jQuery или CSS для защиты формы.
Я использую такое решение каждый раз, когда не могу получить доступ к части содержимого HTML через хук.
источник
Расширяя @ birgire's и оправдывая ответ @Patricia Walton, если вы только добавите
add_action('admin_head-user-edit.php','remove_website_row_wpse_94963');
он будет удален только со страницы, где администратор редактирует профиль. Чтобы он также исчез, когда пользователь редактирует свой профиль, добавьте также
add_action('admin_head-profile.php','remove_website_row_wpse_94963');
, нравится:источник
add_action('admin_head-user-new.php','remove_website_row_wpse_94963');
Код также не работал для меня, но изменение add_action для указания на profile.php сработало.
источник
Разбираясь в ответе @ birgire, я записал это в массив, чтобы его было легче читать:
источник