web-dev-qa-db-fra.com

Masquer l'éditeur visuel de la page si le modèle est sélectionné - redux

La réponse donnée à une question précédente et identique ne fonctionne malheureusement pas sur mon installation WP.

J'utilise une version de la fonction recommandée ici .

function nim_hide_editor() {
    $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ;
    $template = get_post_meta( $post_ID , '_wp_page_template', true );

    if($template == 'portfolio.php'){
        /*echo "<style>#postdivrich{display:none;}</style>";*/
        remove_post_type_support( 'page', 'editor' );
    }
}
add_action('admin_init', 'nim_hide_editor');

J'ai inclus la ligne commentée pour montrer que j'ai essayé la technique de l'écho de la balise de style mentionnée dans la réponse alternative, et aucun d'eux n'a fonctionné lors de la sélection par modèle de page. Toutefois...

Deux choses semblent incongrues:

  • J'ai consulté ma base de données SQL via CPanel et "portfolio.php" est bien la valeur stockée dans post_meta pour les pages sur lesquelles j'essaie de l'utiliser.

  • Sélectionner la page par $ post_ID et utiliser remove_post_type_support, fonctionnera .

        if($post_ID == '13'){
        remove_post_type_support( 'page', 'editor' );
    }
    

Je vais un peu fou - on dirait que j'ai tout vérifié. Évidemment, je pourrais cacher cet éditeur avec un tableau de post_ID utilisant ce modèle, mais cela ne fonctionnera pas pour les pages futures utilisant ce modèle.

3
nimmolo

Ce qui suit fonctionne pour moi, en testant avec TwentyTwelve.

L'utilisation de load-{$pagenow} au lieu de admin_init évite la vérification du $pagenow global. Voir les commentaires pour plus d'informations:

// Run only when editing a page
// For new pages load-page-new.php should be used
// See: http://core.trac.wordpress.org/browser/tags/3.5.1/wp-admin/admin.php#L217
add_action( 'load-page.php', 'hide_editor_wpse_88886' );

function hide_editor_wpse_88886() 
{
    // Not really necessary, but just in case
    if( !isset( $_GET['post'] ) )
        return;

    $template = get_post_meta( $_GET['post'] , '_wp_page_template', true );

    if( 'page-templates/front-page.php' == $template )
    {
        remove_post_type_support( 'page', 'editor' );
    }
}
2
brasofilo