Désactiver l’éditeur WordPress selon le template, l’ID ou le post_type

Désactiver l’éditeur WordPress selon le template, l’ID ou le post_type
WordPress Lecture 4 minutes • 5 janvier 2024

Pour proposer une interface de gestion toujours plus clair, il est primordial de retirer l'affichage de l'éditeur de WordPress dans les articles et pages où il n'est pas utilisé.
C'est d'autant plus vrai lorsqu'on conçoit un site WordPress sur-mesure. Le but étant d'éviter à votre client ou à l'éditeur du site de voir des champs d'édition superflus qui l'induisent en erreur et occupent de la place dans l'écran d'édition.

Je propose dans cet article 2 méthodes selon l'objectif souhaité. Dans tout les cas, il vous faudra éditer le fichier functions.php de votre thème.

  1. Vous avez besoin de désactiver l'affichage de l'éditeur au cas par cas. C'est à dire pour certaines pages seulement. Ce code vous permettra de désigner les Pages concernées selon leur ID ou le modèle de page (template) qui leur est affecté.
  2. Vous ne faites pas dans le détails et le but est de désactiver l'éditeur sur toutes les Pages, tous les Article ou tout un Custom Post Type

1- Désactiver l'éditeur WordPress selon le template et/ou l'ID d'une Page

➡️ Ajuster les lignes 5,6 et 10 à votre gré. Copier/coller le reste tel quel.

function tibow_disable_editor( $id = false ) {

    //Ici on exclue par Template / Modèle de page
    $excluded_templates = array(
        'templates/mon-template1.php',
        'templates/mon-template2.php',
    );
    //Ici on exclue par ID de Page
    $excluded_ids = array(
        11, 12, 13,
    );

    if( empty( $id ) )
        return false;

    $id = intval( $id );
    $template = get_page_template_slug( $id );

    return in_array( $id, $excluded_ids ) || in_array( $template, $excluded_templates );
}


/**
 * Désactive l'éditeur Gutenberg
**/

function tibow_disable_gutenberg( $can_edit, $post_type ) {

    if( ! ( is_admin() && !empty( $_GET['post'] ) ) )
        return $can_edit;

    if( tibow_disable_editor( $_GET['post'] ) )
        $can_edit = false;

    return $can_edit;

}
add_filter( 'gutenberg_can_edit_post_type', 'tibow_disable_gutenberg', 10, 2 );
add_filter( 'use_block_editor_for_post_type', 'tibow_disable_gutenberg', 10, 2 );


/**
 * Désactive l'éditeur classique
**/

function tibow_disable_classic_editor() {

    $screen = get_current_screen();
    if( 'page' !== $screen->id || ! isset( $_GET['post']) )
        return;

    if( tibow_disable_editor( $_GET['post'] ) ) {
        remove_post_type_support( 'page', 'editor' );
    }

}
add_action( 'admin_head', 'tibow_disable_classic_editor' );

2- Désactiver l'éditeur WordPress selon le post_type

Le code suivant est utile si vous souhaitez :

  • Désactiver l'éditeur pour toutes les Pages
  • Désactiver l'éditeur pour tous les Articles
  • Désactiver l'éditeur pour tout un post_type

➡️ Ajuster les lignes 5,6 et 7 à votre gré. Copier/coller le reste tel quel.

/**
 * Désactive l'éditeur Gutenberg sur tout une type de contenu
**/
function tibow_remove_editor_from_post_type() {
    remove_post_type_support( 'post', 'editor' ); //Retire l'éditeur de tous les Articles
    remove_post_type_support( 'page', 'editor' ); //Retire l'éditeur de toutes les Pages
    remove_post_type_support( 'portfolio', 'editor' ); //Retire l'éditeur de toutes les custom post type dont le slug est 'portfolio'
}
add_action('init', 'tibow_remove_editor_from_post_type');

WordPress dispose d'une liste de fonctionnalités que l'on peut désactiver selon le post_type

  • title pour le champs titre principal.
  • editor pour l'éditeur WordPress.
  • author pour le sélecteur d'auteur.
  • thumbnail pour l'image mise en avant.
  • excerpt pour le champs extrait.
  • trackbacks pour les rétroliens (trackbacks) si le contenu fait l'objet d'un lien externe.
  • custom-fields pour la boîte méta des champs personnalisés intégrés à WordPress.
  • comments pour les commentaires.
  • revisions pour les révisions.
  • page-attributes pour le template/modèle de page et l'ordre du menu (hiérarchique uniquement).
  • post-formats pour les formats.

Voici un exemple de ce que l'on peut également faire :

/**
 * Désactive l'Image mise en avant sur toutes les Pages
**/
function tibow_remove_editor_from_post_type() {
    remove_post_type_support( 'page', 'thumbnail' );
}
add_action('init', 'tibow_remove_editor_from_post_type');

Si cet article vous a aidé, lâchez votre plus bel applaudissement en remerciement ! 🤗