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.
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.