Respuesta revisada y actualizada:
No podemos usar el user_contactmethods
filtro para eliminar el contenedor del sitio web, porque esta pieza está codificada en el user-edit.php
archivo y no forma parte del bucle de contactos de usuario filtrable , generado por:
wp_get_user_contact_methods( $profileuser )
Esconderlo con CSS
El elemento de fila del sitio web ahora tiene su propia .user-url-wrap
clase:
<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>
Anteriormente teníamos que usar jQuery, para apuntar a la fila principal del #url
campo, para su eliminación.
Pero ahora podemos apuntar fácilmente al contenedor del sitio web y ocultarlo con 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' );
Ocultar otros campos
Hay clases de fila similares:
tr.user-{field}-wrap
disponible para los campos:
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,
...
incluidos todos los campos de los métodos de contactos dinámicos del usuario .
Aquí solo reemplazamos la {field}
parte con el nombre del campo correspondiente.
Capturas de pantalla
Antes de eliminar la fila del sitio web:
Después de eliminar la fila del sitio web:
.remove()
lugar de.hide()
if
oración con la prueba de capacidad. Funcionafunctions.php
, pero creo que es mejor tenerlo en un complemento para que no lo pierdas cuando cambies el tema.apply_filters( "user_{$name}_label", $desc );
user-*-wrap
partes ;-) @BradDaltonResolví el problema con las funciones ob_ y DOMDocument. Es mejor que jQuery o CSS para proteger el formulario.
Uso este tipo de solución cada vez que no puedo acceder a una parte del contenido HTML a través de un gancho.
fuente
Ampliando en @ birgire y justificando la respuesta de @Patricia Walton, si solo agrega
add_action('admin_head-user-edit.php','remove_website_row_wpse_94963');
solo desaparecerá de la página donde el administrador está editando un perfil. Para que también desaparezca cuando un usuario edita su propio perfil, agregue también
add_action('admin_head-profile.php','remove_website_row_wpse_94963');
, Me gusta esto:fuente
add_action('admin_head-user-new.php','remove_website_row_wpse_94963');
El código tampoco funcionaba para mí, pero el cambio de add_action para apuntar a profile.php sí funcionó.
fuente
Ampliando la respuesta de @ birgire, escribí esto en una matriz para que sea un poco más fácil de leer:
fuente