My Web道

WEB制作科 受講記録 …とその後も続くWEB制作に関する活動・学習記録です。

【WordPress】投稿記事編集画面で標準エディタ(本文)を非表示にする方法

f:id:sntkk3:20170913235604p:plain

投稿記事編集画面で標準エディタ(本文)を非表示にする方法 2種

今日は、WordPress管理画面(投稿記事 編集画面)から標準エディタを表示させないようにするための実現方法を検討してみました。
確認した以下2通りの方法について、お伝えします。

1) ユーザー権限で表示を制御する方法
2) CSSで表示を制御する方法

[用途]
記事の入力を、専用のカスタムフィールドで行うようにカスタマイズした場合など、標準のエディタフィールドが不要となる場合に。

1) ユーザー権限で表示を制御する方法

以下コードを functions.phpに記述することにより、
編集者権限のユーザーが投稿記事編集画面を開いている場合、
標準エディタが非表示となります。

/* ++++++++++++++++++++++++++++ */ 
/* デフォルトエディタを非表示(ユーザー権限で制御) 
/* ++++++++++++++++++++++++++++ */ 

add_action( 'init' , 'my_remove_post_editor_support' ); 
function my_remove_post_editor_support() { 
    if ( current_user_can('editor') ) { // ログインしているユーザの権限グループを指定 
        remove_post_type_support( 'post', 'editor' ); 
    } 
} 

2) CSSで表示を制御する方法

[前提]
標準エディタの表示・非表示を切り替え可能にするため、
その目的用にカスタムフィールドを追加しています。
※ここでは下記の「default_editor_on」がそのフィールド名を指しています。
※カスタムフィールドは、プラグイン「Advanced Custom Fields(注)」の真偽タイプで作成しています。

(注) Advanced Custom Fields について

以下、「Advanced Custom Fields」ダウンロードサイトです。
ja.wordpress.org

使い方については、以下、「kotori」さんの記事が非常にわかりやすくて、参考になると思います。
kotori-blog.com


以下コードをfunctions.phpに記述することにより、
カスタムフィールド「default_editor_on」のチェックボックスがオンになっていない場合、標準エディタが非表示となります。

/* ++++++++++++++++++++++++++++ */ 
/* 標準エディタをcssで非表示 
/* ++++++++++++++++++++++++++++ */ 
add_action('admin_head', 'post_output_css'); 
function post_output_css() { 
    $pt = get_post_type(); 
if ($pt == 'post' ) { //投稿の場合はpost 
 
//エディタ表示切替 
    $editor_on = get_field('default_editor_on'); 
    if($editor_on){ 
 
}else{ 
     //処理 
   $hide_postdiv_css = '<style type="text/css">#postdiv, #postdivrich { display: none; }</style>'; 
      echo $hide_postdiv_css; 
    } 
 
    //if ($pt == 'post') { //投稿の場合はpost 
        //$hide_postdiv_css = '<style type="text/css">#postdiv, #postdivrich { display: none; }</style>'; 
        //echo $hide_postdiv_css; 
    } 
} 
//add_action('admin_head', 'post_output_css'); 

まとめ

上記 1) 2) いずれの方法でも、意図した通り、標準エディタを非表示にすることができました。
より使い勝手の良いWordPress UI実現を目指し、こうした方法も上手にとり入れていきたいものですね。