Réponse revisitée et mise à jour:
Nous ne pouvons pas utiliser le user_contactmethods
filtre pour supprimer le wrapper du site Web, car cette pièce est codée en dur dans le user-edit.php
fichier et ne fait pas partie de la boucle de contacts utilisateur filtrable , générée par:
wp_get_user_contact_methods( $profileuser )
Le cacher avec CSS
L' élément de ligne du site Web a désormais sa propre .user-url-wrap
classe:
<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>
Auparavant, nous devions utiliser jQuery, pour cibler la ligne parent du #url
champ, pour la suppression.
Mais maintenant, nous pouvons facilement cibler le wrapper du site Web et le masquer avec 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' );
Masquer d'autres champs
Il existe des classes de lignes similaires:
tr.user-{field}-wrap
disponible pour les champs:
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,
...
y compris tous les champs des méthodes de contacts utilisateurs dynamiques .
Ici, nous remplaçons simplement la {field}
pièce par le nom de champ correspondant.
Captures d'écran
Avant de supprimer la ligne du site Web:
Après avoir supprimé la ligne du site Web:
.remove()
place de.hide()
if
phrase avec le test de capacité. Cela fonctionnefunctions.php
, mais je pense qu'il vaut mieux l'avoir dans un plugin pour ne pas le perdre lorsque vous changez de thème.apply_filters( "user_{$name}_label", $desc );
user-*-wrap
parties ;-) @BradDaltonJ'ai résolu le problème avec les fonctions ob_ et DOMDocument. C'est mieux que jQuery ou CSS pour protéger le formulaire.
J'utilise ce type de solution chaque fois que je ne peux pas accéder à une partie du contenu HTML via un hook.
la source
Développer sur @ birgire et justifier la réponse de @Patricia Walton, si vous ajoutez seulement
add_action('admin_head-user-edit.php','remove_website_row_wpse_94963');
il ne disparaîtra que de la page où l'administrateur modifie un profil. Pour le faire également disparaître lorsqu'un utilisateur modifie son propre profil, ajoutez également
add_action('admin_head-profile.php','remove_website_row_wpse_94963');
, comme ça:la source
add_action('admin_head-user-new.php','remove_website_row_wpse_94963');
Le code ne fonctionnait pas non plus pour moi, mais la modification de add_action pour pointer vers profile.php a fonctionné.
la source
En développant la réponse de @ birgire, j'ai écrit ceci dans un tableau donc c'est un peu plus facile à lire:
la source