Me encantaría poder ocultar meta cuadros utilizando las opciones de pantalla, en lugar de eliminarlos o restringirlos a roles de usuario, el objetivo es simplemente "desmarcar" el meta cuadro para el usuario.
Veo cómo esto sería complicado, ya que cualquier código que haga un cambio de base de datos para un usuario no podrá ejecutarse cada vez que acceda a la página porque simplemente se restablecerá. Pero las personas más inteligentes que yo codifico el núcleo, por lo que tal vez hay una manera. Y si lo hay, me muero por saberlo.
¿Algunas ideas?
Respuestas:
Te refieres a los metaboxes en la pantalla de publicación del administrador, ¿verdad?
Para eso no necesita un complemento, simplemente suelte lo siguiente en su archivo functions.php.
Básicamente, lo que está sucediendo es que para el usuario actualmente conectado, está cambiando algunos meta_valores guardados en la tabla wp_usermeta.
Hay dos formas de usar esta función: puede engancharse en 'user_register' o puede engancharse en 'admin_init'.
La ventaja de usar 'user_register' es que esta función solo se activará cuando se registre un nuevo usuario (por lo tanto, una sobrecarga menor). Sin embargo, no funcionará para los usuarios que ya existen.
Si desea que funcione para usuarios que ya existen, conéctese a 'admin_init'. La desventaja, por supuesto, es que ahora esta función se activa cada vez que un usuario accede a la página de administración.
fuente
functions.php
archivo de mi tema porque las opciones predeterminadas son para un proyecto específico, que está representado / alojado por el tema que estoy desarrollando.Hay un
default_hidden_meta_boxes
filtroget_hidden_meta_boxes()
que permite modificar que no se muestran siempre que el usuario no haya modificado sus preferencias en las opciones de pantalla.fuente
Tengo comentarios de código sobre tres soluciones ya publicadas, pero también un comentario general
Presentan una opción subóptima: anular la opción de casilla de verificación Opciones de pantalla del usuario; o respetarlo pero ignorar su código si el usuario alguna vez ha cambiado las casillas de verificación, incluso para otros meta_boxes, o antes de que su código estuviera en WP. Parece que la opción respetuosa solo es útil si todos sus usuarios son nuevos. La mejor solución sería establecer una opción de usuario personalizada para determinar si el usuario ha cambiado sus valores predeterminados específicos de meta_box, y respetar eso. ¡No, no he escrito ese código! Debería ser fácil ... :)
Las tres soluciones publicadas:
1. La
hidden_meta_boxes
solución de WraithKenny es la que anula la opción user_option. Tenga en cuenta que cubre todos los tipos de publicación ('publicación', 'página', 'enlace', 'adjunto' y cualquier tipo de publicación personalizada). Eso está bien a menos que quieras que sea específico. Especificó los post_type en susadd_meta_box()
llamadas. Puede intentar hacer coincidir esos, o simplemente aletearlo, ya que los que no coincidan serán ignorados. Si desea conocer el post_type en el filtro, puede usar elscreen
parámetro adicional :2. Como dice Rarst,
default_hidden_meta_boxes
respeta la opción de usuario. Al igual que conhidden_meta_boxes
, puede usar el parámetro $ screen para distinguir post_types.3. La función set_user_metaboxes () de Drebabels también respeta la opción de usuario. Tenga en cuenta que está codificado para la pantalla de edición de 'publicación'. Para manejar la pantalla de edición de 'página' y otros post_types, envuelva el código en este bucle:
Si,
get_user_meta
deberia serget_user_option
. Para un solo sitio no importa, e incluso para un sitio múltiple probablemente no. Vea wp-admin / includes / ajax-actions.php para saber por qué:update_user_option
tiene el parámetro global 'verdadero'.fuente
También hay un
hidden_meta_boxes
filtro que "desmarcaría" el metabox (ocultándolo) en cada carga de la página (pero no tendría que actualizar la base de datos). Si solo desea desactivarlo para los nuevos usuarios hasta que ellos mismos marquen la casilla, use la respuesta de Rarst.fuente