¿Cómo eliminar ciertas opciones de pantalla y meta cuadros de agregar / editar tipo de publicación?

10

Ahora, cuando agrega o edita una publicación en particular dentro del tipo de publicación deseado, también hay más opciones de pantalla. Sin embargo, estas opciones de pantalla muestran / ocultan meta cuadros. Me gustaría poder obtener mediante programación una lista de todas estas Opciones de pantalla registradas de meta cuadros, para poder verificar nuevamente si existe una cierta variedad de Opciones de pantalla, y si es así, planeo eliminarlas mediante programación.

WordPress - Opciones de pantalla - Agregar o editar publicación - Meta Boxes Haga clic aquí para ver la captura de pantalla completa

Pregunta ¿Cómo puedo obtener mediante programación una lista de todas las Opciones de pantalla registradas (meta cuadros) en los tipos de publicación, donde desea agregar o editar una publicación en particular dentro de su tipo de publicación deseado.

En última instancia, el objetivo aquí es eliminar estas opciones y no simplemente deshabilitarlas. Estoy buscando hacer algo similar a lo que he logrado para eliminar meta cuadros de tablero innecesarios .

Michael Ecklund
fuente

Respuestas:

13

Lo que necesita está en global $wp_meta_boxesindexado por get_current_screen()->id. Al eliminar las opciones de la pantalla también se eliminarán los metaboxes que puede hacer justo antes de que las opciones de la pantalla se muestren con el 'in_admin_header'gancho.

Así que supongamos que desea deshacerse de la opción de pantalla "Enviar Trackbacks" que ve en esta captura de pantalla:

Suelte la siguiente clase en el functions.phparchivo de su tema o en un complemento que pueda estar creando y el código eliminará la opción de pantalla "Enviar Trackbacks" (y su metabox asociado, que también es lo que quería, ¿verdad?):

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

Y así es como se ve después de agregar el código anterior a un sitio de WordPress 3.4:

El uso del depurador Zend dentro de PhpStorm aquí es la inspección $wp_meta_boxes[get_current_screen()->id]para que pueda ver qué valores tiene una instalación predeterminada de WordPress 3.4 en la pantalla de edición de Post (he marcado los índices de matriz a los que hice referencia en mi ejemplo, es decir $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']:

Espero que esto sea lo que estabas buscando?

MikeSchinkel
fuente
3
¡Simplemente asombroso! ¡Felicitaciones, Ecklund, no solo recibiste una respuesta canónica, sino una legendaria ...!
brasofilo
@brasofilo Gracias por el cumplido. Me siento honrado.
MikeSchinkel
@MikeSchinkel Esto funciona en la adición / edición de una publicación, y gracias por eso, pero ¿cómo elimina los meta cuadros de opciones de pantalla para la página que tiene una wp_list_table que contiene una lista de todas sus publicaciones? Consulte la captura de pantalla # 1.
Michael Ecklund
@MichaelEcklund Hola, supongo que no debería responder preguntas cuando estoy demasiado cansado para comprender completamente la pregunta, ¿eh? La respuesta a la pregunta sin respuesta es en realidad significativamente diferente a la que respondí, por lo que en realidad son dos preguntas diferentes. ¿Qué le parecería editar esta pregunta para preguntar lo que respondí y luego agregar otra pregunta como preguntar lo que no hice? Si puede hacer eso y publicar un enlace a él aquí en los comentarios, así que lo encontraré, también publicaré una respuesta de detalles equivalentes para esa pregunta. De lo contrario, puede ser complicado escribir una respuesta coherente para ambos.
MikeSchinkel
1
@MichaelEcklund Genial, gracias. Respondido: wordpress.stackexchange.com/a/56896/89
MikeSchinkel
0

Lo sentimos, es un poco secundario, pero descubrí que es útil cuando se trata de eliminar wp de los cuadros de meta, pero no tanto para los cuadros de meta relacionados con temas personalizados o personalizados. Para ilustrar un poco más: instalé un nuevo tema que introdujo un meta cuadro personalizado cada vez que publica una publicación / página que aparece en las opciones de la pantalla. (Soy nuevo en wp). Por alguna razón, usando el enfoque de Mike, no pude eliminar este meta cuadro personalizado, pero funcionó para todo lo que no es personalizado. Por mi estupidez, seguí golpeando la pared durante horas, aún no podía entenderlo, así que tuve que volver a esto:

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
Yinnie
fuente