Cómo cambiar las opciones de pantalla predeterminadas en WordPress

3 minutos de lectura

Estoy buscando una manera de cambiar las opciones de pantalla predeterminadas en el editor de publicaciones. Quiero ocultar ciertas opciones por defecto. Estoy armando un sitio de recetas familiares y no quiero abrumar a los usuarios con demasiadas opciones. No quiero iniciar sesión como cada usuario y cambiar sus opciones manualmente. He revisado los archivos principales y los archivos de temas de WP y no puedo encontrar muchas referencias a las opciones de pantalla. ¿Está definido en algún lugar de la base de datos?

Gracias por adelantado.

Utilizar el meta_cajas_ocultas_predeterminadas filtrar

add_filter( 'default_hidden_meta_boxes', 'my_hidden_meta_boxes', 10, 2 );
function my_hidden_meta_boxes( $hidden, $screen ) {
    return array( 'tagsdiv-post_tag', 'tagsdiv', 'postimagediv', 'formatdiv', 'pageparentdiv', ''); // get these from the css class
}

o

add_filter( 'hidden_meta_boxes', 'my_hidden_meta_boxes', 10, 2 );

Bonificación: para comprender cómo funciona, eche un vistazo a la función principal get_hidden_meta_boxes(). Aquí hay una versión simplificada:

function get_hidden_meta_boxes( $screen ) {
    $hidden = get_user_option( "metaboxhidden_{$screen->id}" );
    if ( $use_defaults ) {
        $hidden = apply_filters( 'default_hidden_meta_boxes', $hidden, $screen );
    }
    return apply_filters( 'hidden_meta_boxes', $hidden, $screen, $use_defaults );
}

  • Tenga en cuenta que esto solo funciona en usuarios NUEVOS O usuarios que aún no han realizado ninguna personalización en sus opciones de pantalla; quizás otra forma de manejarlo si te encuentras con este problema?

    – Brett

    1 de junio de 2020 a las 18:37

Las opciones de pantalla predeterminadas se guardan en wp_usermeta la meta_key es metaboxhidden_post.

Creo que la forma más fácil de establecer opciones predeterminadas (o de ocultar cuadros específicos) sería usar un complemento como administrar. Yo personalmente uso el campos personalizados avanzados complemento para esta tarea (y mucho más).

  • Muchas gracias por la informacion. Vi adminimizar al buscar complementos para esta tarea y vi que es para v. 3.6-beta3. Estoy ejecutando 3.9.1. Esa es la única razón por la que no mordí. ¿Puedo instalarlo de forma segura?

    – Maggy Mae

    29 de junio de 2014 a las 1:46

  • Supongo que es seguro de usar. Viene de un desarrollador bueno y experimentado. Si revisa en “compatibilidad”, generalmente obtendrá una idea bastante buena. ¿Dónde dice que es para v3.6-beta3?

    – alpipego

    29 de junio de 2014 a las 6:07


  • En el enlace que publicaste – wordpress.org “Requiere: 2.5 o superior -Compatible hasta: 3.6-beta3 – Última actualización: 2013-6-6 – Sin embargo, lo intentaré… Supongo que no puede doler. Muchas gracias. La razón por la que dudo en usar complementos que no se han actualizado es porque temo que no serán compatibles con la próxima actualización importante de WP y tal vez el desarrollador se está moviendo hacia cosas más grandes y mejores. Debe ser un dolor para revisar los complementos cada vez que cambia WP.

    – Maggy Mae

    29 de junio de 2014 a las 15:13

  • Ah si lo siento No vi eso. Le daría una oportunidad… Todavía puedes intentarlo wordpress.org/plugins/advanced-custom-fields aunque.

    – alpipego

    29 de junio de 2014 a las 17:34

  • @alpipego ¿Le importaría explicar cómo se pueden usar los campos personalizados avanzados para configurar las opciones de pantalla predeterminadas?

    – arcónico

    8 de mayo de 2015 a las 2:09

Una ligera modificación a la respuesta de Zendka. Solo quería eliminar un elemento de la lista, dejando la matriz sin cambios.

add_filter( 'default_hidden_meta_boxes', 'show_author_metabox', 10, 2 );
function show_author_metabox( $hidden, $screen )
{
    $authorkey = array_search( 'authordiv', $hidden );
    unset( $hidden[ $authorkey ] );

    return $hidden;
}

En mi caso, estaba eliminando el ‘authordiv’ de la lista oculta, cámbielo por cualquier metabox que desee eliminar de los metaboxes ocultos.

No verifico la existencia del metabox antes de desactivarlo, porque no produce ningún aviso/error de PHP si no hay resultados de array_search.

¿Ha sido útil esta solución?