¿Deshabilitar el arrastre de metaboxes en los tipos de publicaciones personalizadas?

4

Puedo desactivar el arrastre de metaboxes en todo el sitio con esta función:

function disable_drag_metabox() {
wp_deregister_script('postbox');
}
add_action( 'admin_init', 'disable_drag_metabox' );

Pero lo quiero solo en un tipo de publicación personalizada. Intenté lo habitual:

function disable_drag_metabox() {
global $current_screen;
if( 'event' == $current_screen->post_type ) wp_deregister_script('postbox');
}
add_action( 'admin_init', 'disable_drag_metabox' );

y también este:

function disable_drag_metabox() {
$screen = get_current_screen();
if( in_array( $screen->id, array( 'event' ) ) ) {
    wp_deregister_script('postbox');
}
}
add_action( 'admin_init', 'disable_drag_metabox' );

Lamentablemente no funciona. ¿Qué estoy haciendo mal? el tipo de publicación personalizada se llama evento.

    
pregunta jockebq 12.03.2018 - 19:32

1 respuesta

0

La pantalla actual no está configurada en el gancho admin_init . Es por eso que global $current_screen y get_current_screen() no funcionan.

Cada página de administración tiene un gancho load-something que se activa después de configurar la pantalla actual. Ya que dice que esto es para un tipo de publicación personalizada de eventos, debe usar el gancho load-post.php . Entonces tu código se vería así:

function disable_drag_metabox() {
  if( 'events' === get_current_screen()->post_type ) {
    wp_deregister_script( 'postbox' );
  }
}
add_action( 'load-post.php', 'disable_drag_metabox' );

Puede usar el complemento Query Monitor para averiguar qué ganchos se activan en cada página y en qué orden. También hace muchas otras cosas de cocinero.

    
respondido por el Nathan Johnson 15.03.2018 - 00:10

Lea otras preguntas en las etiquetas