web-dev-qa-db-ja.com

特定のページでビジュアルエディタを無効にする

特定の1ページからビジュアルエディタを削除したいのですが、ビジュアルモードでこの1ページを編集するとコードが壊れるためです。クライアントが特定のページにこのオプションを持っていないことを確認したいです。しかし、私はHTMLエディタを削除したくありません。

このコード行は、ビジュアルエディタとHTMLエディタを削除します。remove_post_type_support( 'page'、 'editor');

remove_post_type_supportを詳しく見てください: http://codex.wordpress.org/Function_Reference/remove_post_type_support

しかし、私はビジュアルエディタを無効にしたいだけです。

このテーマのfunctions.phpには、最初のテストとして、次のものがあります。

function remove_editor_init() {

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


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

しかし、条件文is_admin()とis_page()は一緒には動作しないようです。

助言がありますか?

5
Starfs

あなたのコードでは、アクションadmin_initを呼び出すことでis_admin()は不要になります。そして、間違えなければ、 is_page() はフロントエンドで使われることを意味しています...

しかし、解決策は次のとおりです( この回答 に基づく)。

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

これが私がこれを解決した方法です:

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

これを反映させたいページIDを選択できます

1
Kyzer