Desativar o arrastamento de metaboxes em tipos de postagem personalizados?

4

Eu posso desativar o arrastamento de metaboxes em todo o site com esta função:

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

Mas eu quero apenas em um tipo de postagem personalizada. Eu tentei o usual:

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

e também 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' );

Infelizmente, não funciona. O que estou fazendo de errado? o tipo de postagem personalizada é chamado de evento.

    
por jockebq 12.03.2018 / 19:32

1 resposta

0

A tela atual não está configurada no gancho admin_init . É por isso que global $current_screen e get_current_screen() não funcionam.

Cada página de administração tem um gancho load-something que é acionado depois que a tela atual é configurada. Como você diz que isso é para um tipo de postagem personalizada de eventos, use o load-post.php hook. Então seu código ficaria assim:

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

Você pode usar o plug-in Query Monitor para descobrir quais ganchos são acionados em cada página e em que ordem. Também faz muitas outras coisas de cozinhar.

    
por Nathan Johnson 15.03.2018 / 00:10