¿Cómo eliminar ciertas opciones de pantalla y Meta Boxes del tipo de publicación / adición?

10

Ahora, cuando agrega o edita una publicación en particular dentro del tipo de publicación que desea, también hay más opciones de pantalla. Aunque, estas Opciones de Pantalla están mostrando / ocultando meta cajas. Me gustaría poder obtener mediante programación una lista de todas estas Opciones de pantalla registradas de metacuadros, para poder verificar nuevamente si existe una cierta variedad de Opciones de pantalla, y si lo hacen, planeo eliminarlas mediante programación.

Haga clic aquí para Captura de pantalla a tamaño completo

Pregunta ¿Cómo puedo obtener una lista programada de todas las Opciones de pantalla registradas (meta box) en los tipos de publicación, donde desea agregar o editar una publicación en particular dentro del tipo de publicación que desee?

En última instancia, el objetivo aquí es eliminar estas opciones y no simplemente deshabilitarlas. Estoy buscando hacer algo en la línea de lo que he logrado para eliminar las meta cajas innecesarias del panel de control .

    
pregunta Michael Ecklund 26.06.2012 - 22:47

2 respuestas

13

Lo que necesita está en $wp_meta_boxes global indexado 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 se muestren las opciones de la pantalla utilizando el gancho 'in_admin_header' .

Supongamos que desea deshacerse de la opción de pantalla "Enviar trackbacks" que se ve en esta captura de pantalla:

Coloquelasiguienteclaseenelarchivofunctions.phpdesutemaoenuncomplementoquepuedaestarcreandoyelcódigoeliminarálaopcióndepantalla"Enviar trackbacks" (y su metabox asociado, que también es lo que querías, ¿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:

Utilizandoel Zend debugger en PhpStorm aquí está la inspección de $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 publicación (He marcado con un círculo 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?

    
respondido por el MikeSchinkel 27.06.2012 - 04:36
0

Lo siento, es un tema secundario, pero encontré que es útil cuando se trata de eliminar las cajas de metadatos de wp de la caja, pero no tanto para las cajas meta personalizadas o relacionadas con el tema personalizado. Para ilustrar un poco más: instalé un nuevo tema que introdujo un meta box personalizado cada vez que una nueva publicación / página aparece en las opciones de pantalla. (Soy nuevo en wp) Por alguna razón, utilizando el enfoque de Mike, no pude eliminar esta meta box personalizada, pero funcionó para todo lo que no era personalizado. Por mi estupidez seguí golpeando la pared durante horas y 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;
    
respondido por el Yinnie 11.11.2012 - 03:01