web-dev-qa-db-fra.com

Désactiver l'éditeur visuel sur une page spécifique

Je voudrais supprimer l'éditeur visuel d'une page spécifique parce que si j'édite cette page en mode visuel, le code est cassé. Je veux m'assurer que le client n'a pas cette option sur cette page. Cependant, je ne veux pas supprimer l'éditeur HTML.

Cette ligne de code supprime l'éditeur visuel et l'éditeur html: remove_post_type_support ('page', 'editor');

à regarder de plus près remove_post_type_support: http://codex.wordpress.org/Function_Reference/remove_post_type_support

Mais je veux seulement désactiver l'éditeur visuel.

Tests initiaux, dans functions.php pour ce thème, j'ai:

function remove_editor_init() {

 if ( is_admin() ) {
    if (is_page(2548)) { 


    remove_post_type_support('page', 'editor');
    }
 }
}
add_action('init', 'remove_editor_init');

Cependant, les instructions conditionnelles is_admin () et is_page () ne semblent pas fonctionner ensemble.

Aucune suggestion?

5
Starfs

Dans votre code, l'appel de l'action admin_init rend is_admin() inutile. Et, si on ne s'y trompe pas, is_page() est destiné à être utilisé dans le front-end ...

Mais la solution est la suivante (basée sur cette réponse ):

add_filter( 'user_can_richedit', 'wpse_58501_page_can_richedit' );

function wpse_58501_page_can_richedit( $can ) 
{
    global $post;

    if ( 28 == $post->ID )
        return false;

    return $can;
}
7
brasofilo

Voici comment j'ai résolu ceci:

add_filter( 'admin_footer', 'removes_editor_visual_tab', 99 );

function removes_editor_visual_tab()
{
    $post_id = $_GET['post'];
    if($post_id == 1434){
    ?>
        <style type="text/css">
        a#content-tmce, a#content-tmce:hover {
            display:none;
        }
        </style>
        <script type="text/javascript">
        jQuery(document).ready(function() {
            document.getElementById("content-tmce").onclick = 'none';
        });
        </script>
    <?php
    }
}

Vous pouvez sélectionner le (s) ID (s) de page sur lequel/lesquelles vous souhaitez réfléchir.

1
Kyzer