Tengo que eliminar algunos campos de perfil de la página 'Perfil' de acuerdo con las funciones del usuario. Para quitar el selector de color que utilicé remove_action("admin_color_scheme_picker", "admin_color_scheme_picker")
. Quiero eliminar estos campos:
- Apodo
- Mostrar nombre públicamente como
- Campos AIM, Yahoo, Google talk y Sobre ti
- La sección 'Mostrar barra de administración' junto con las 2 casillas de verificación
Revisé el archivo 'user-edit.php' para ver si hay acciones / filtros que me permitan hacerlo, pero parece que no. ¿Puede alguien decirme cómo hacer esto? Cualquier ayuda sería apreciada. Gracias
EDITAR: Gracias @helenhousandi por la respuesta. Sin embargo, ya lo había hecho de esta manera.
<?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 }
}
?>
Sé que esto es un poco más largo, ¡pero funcionó! Creo que iré con la respuesta de @helenhousandi.
functions.php
un archivo de complemento. Mientras los ganchos sean correctos, funcionará desde cualquiera de los lugares.Respuestas:
Para el filtro de métodos de contacto
user_contactmethods
:fuente
Aunque el
user_contactmethods
filtro es uno de los pocos para la pantalla de perfil de usuario, dado que los otros campos no son obligatorios en WordPress, puede usar jQuery's.hide()
y.remove()
deshacerse de los que no quiere sin complicaciones en términos de guardar la información . Claro, una persona sin JS aún los vería, pero esa es una pequeña minoría y supongo que la información que cambia allí en realidad no afectará nada.Un ejemplo de eliminación de toda la pieza de opciones personales (mostrar barra de administración y combinación de colores). Sé que no es exactamente lo que estás buscando, solo quería darte un ejemplo rápido que tengo a mano:
Además, una nota sobre la opción Mostrar barra de administración: en 3.3 la barra de administración se está convirtiendo en el encabezado y, por lo tanto, no se puede activar o desactivar, por lo que no vale la pena preocuparse.
Actualicé el código de ejemplo para que sea más preciso y completo. Tenía algunas sobras allí.
fuente
profile.php
. También necesitaba hacer esto para un rol personalizado específico definido en mi sistema. Actualizando mi pregunta con la respuesta.$("#nickname,#display_name").parent().parent().remove();
Como parece que no hay un buen enlace php para esto, terminé ocultando los campos con CSS y luego los eliminé con JS.
fuente
Desde el foro de soporte de WordPress puedes hacer la eliminación usando PHP. Esto elimina la sección Acerca de ti mismo:
El código reemplaza el encabezado 'Acerca de usted mismo' con 'Contraseña' y luego elimina cualquier cosa entre eso y la siguiente tabla que encuentra (que es la tabla de contraseña).
Además, el plugin WP Hide Dashboard hace un reemplazo similar de jQuery si desea extender eso.
fuente
admin_head-profile.php
y en suadmin_footer-profile.php
lugar¡¡TEN CUIDADO!!
1) Eliminar un campo puede no ser bueno , como en la actualización, si no envía los campos esenciales al enlace de actualización WORDPRESS, ¡entonces podría establecer valores vacíos para esos campos! (por ejemplo, al enviar el formulario, debería existir, es decir
<input name="username".../>
)Creo que es mejor OCULTAR a los usuarios solo visualmente, con jquery
.hide();
y no con el.remove();
código EJEMPLO para ocultar los campos " DISPLAY NAME " y " NICKNAME ":
2) Para ocultar la barra de administración, hay una opción especial en el menú de WordPress (en Configuración) . para código personalizado, como ie
fuente
Utilizar
y añadir
antes de JavaScript.
fuente
No hay filtro para deshabilitarlos. Mire la fuente (
/wp-admin/user-edit.php
) cuando necesite hacer cosas como esta. Puede ocultarlos con JS, pero aún pueden hacerse visibles y los valores se actualizan en POST.La única opción viable es hackear el núcleo usted mismo. Solo asegúrese de manejar la actualización y no tenga en cuenta estos campos en POST.
fuente