web-dev-qa-db-fra.com

Personnaliser l'écran d'édition de publication pour les types de publication personnalisés?

Quelle est la meilleure façon de personnaliser complètement l’écran d’administration Modifier le message pour un type de message personnalisé spécifique?

Je l'ai déjà personnalisé dans une certaine mesure lors de la création du type de message personnalisé - ajout de champs supplémentaires, etc., mais je souhaite supprimer de nombreux éléments tels que les permaliens, les messages de prévisualisation, la désactivation de l'édition rapide, etc.

15
fxfuture

Vous trouverez ici des réponses à certaines de ces questions: Définition des options de l’écran d’administration par défaut et de la commande Metabox

Pour supprimer le métabox permalien:

function my_remove_meta_boxes() {
    remove_meta_box('slugdiv', 'my-post-type', 'core');
}
add_action( 'admin_menu', 'my_remove_meta_boxes' );

de plus, vous devrez cacher # edit-slug-box avec css ou javascript. voir: Chargement de scripts externes dans Admin, mais UNIQUEMENT pour un type de message spécifique?

Pour désactiver l'édition rapide:

function my_remove_actions( $actions, $post ) {
    if( $post->post_type == 'my-post-type' ) {
        unset( $actions['inline hide-if-no-js'] );
    }
    return $actions;
}
add_filter( 'post_row_actions', 'my_remove_actions', 10, 2 );

Pour modifier le lien de prévisualisation, vous pouvez utiliser le filtre 'preview_post_link', mais il ne fonctionne que lorsque le message n'a pas encore été publié. La solution serait donc de supprimer la méta-boîte de soumission et d'ajouter votre propre boîte modifiée:

function my_replace_submit_meta_box() {
    remove_meta_box('submitdiv', 'my-post-type', 'core');
    add_meta_box('submitdiv', __('Publish'), 'custom_post_submit_meta_box', 'my-post-type', 'side', 'core');
}
add_action( 'admin_menu', 'my_replace_submit_meta_box' );

function custom_post_submit_meta_box() { // a modified version of post_submit_meta_box() (wp-admin/includes/meta-boxes.php, line 12)
    ...
}
16
sorich87