web-dev-qa-db-fra.com

Désactiver le glissement des métaboxes dans les types de publication personnalisés?

Je peux désactiver le glissement des métaboxes dans tout le site avec cette fonction:

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

Mais je le veux uniquement sur un type de message personnalisé. J'ai essayé l'habituel:

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

et aussi celui-ci:

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' );

Malheureusement, ça ne marche pas. Qu'est-ce que je fais mal? le type de publication personnalisé est appelé événement.

3
jockebq

L'écran actuel n'est pas configuré sur le hook admin_init. C'est pourquoi global $current_screen et get_current_screen() ne fonctionnent pas.

Chaque page d'administration a un hook load-something qui se déclenche après la configuration de l'écran actuel. Puisque vous dites que cela concerne un type de publication d'événements personnalisé, vous devez utiliser le hook load-post.php. Donc, votre code ressemblerait à ceci:

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

Vous pouvez utiliser le plugin Query Monitor pour déterminer quels points d'accès se déclenchent sur chaque page et dans quel ordre. Il fait aussi beaucoup d'autres choses de cuisinier.

0
Nathan Johnson