プラグインなし!WordPressでブロックエディタ・クラシック両方の投稿画面から不要な項目を削除する方法

プラグインなし!WordPressで、ブロックエディタ・クラシックエディタ両方の投稿画面から不要なメニューを削除する方法[WordPress]
今回の記事は、「WordPressの投稿画面から、不要な項目をプラグインなしで削除する方法」についての記事です。

ブロックエディタ・クラシックエディタどちらを使っている場合も対応できる形で書いていきたいと思います。

それでは早速、次のセクションから、その方法を見ていきましょう。

早速、コードなど。ブロックエディタの場合

タイトルの通り、
ブロックエディタの投稿画面から、不要な項目をプラグインなしで削除する方法」です。
functions.php に次の様に記載すると、動作します。

// 投稿ページの項目を調整_ブロックエディタ用
function removeEditorPage() {
  remove_post_type_support('post','thumbnail');
  remove_post_type_support('post','revisions');
  remove_post_type_support('post','comments');
  remove_post_type_support('post','page-attributes');
  remove_theme_support('post', 'core-block-patterns');
}
if( !current_user_can('administrator') ) {
  add_action('admin_menu', 'removeEditorPage');
}

↑WordPressにあらかじめ用意されている remove_post_type_support() 関数を使って、
文字通り「サポートをしなくさせる」ということです。

9行目では、
if( !current_user_can('administrator') ) {...
として、管理者じゃなかった場合にこの関数を実行する様にしています。

これは、おそらくこの記事の方法を使いたいと思うシーンを想像するに、
「管理者以外に管理画面に入るユーザーが他にいる」
「そのユーザーは投稿者や編集者など、管理者以外の権限ユーザーである」

↑というケースが想定されるため、この記述をサンプルとして加えてあります。

固定ページの場合

上記のサンプルコードは、「投稿」の場合です。
もし、「固定ページ」の場合にも適用したい場合は

remove_post_type_support('post','thumbnail');

↑この第一引数 'post' の部分を

'page' に変えるだけで適用が可能です。

クラシックエディタの場合

ブロックエディタがWordPressの標準エディタとしてリリースされてから久しく時が経ちますが、
意外とまだまだ、「従来からあるクラシックエディタでWebサイトを運用しているケース」というのは、
実際のWeb制作現場でもよく聞く話です。

それは、すでに「クラシックエディタでの更新業務のフロー」が確立されている様な、
長年にわたって運営されているサイトほどその傾向が強い様に感じます。
誰しも、既存の技術資産から優先的に使っていきたくなるのは、当然の心理かと思います(それが良いかどうかは別の論点として)。

ということで、次のコードは
クラシックエディタの場合の
投稿画面から、不要な項目をプラグインなしで削除する方法
になります。
こちらも functions.php に記載します。

function removeEditorPageClassic() {
  if( !current_user_can('administrator') ) {
    remove_meta_box('postimagediv', 'post', 'side');
    remove_meta_box('revisionsdiv', 'post', 'side');
    remove_meta_box('commentstatusdiv', 'post', 'side');
    remove_meta_box('commentsdiv', 'post', 'side');
    remove_meta_box('slugdiv', 'post', 'side');
  }
}
if( !current_user_can('administrator') ) {
  add_action('admin_menu', 'removeEditorPageClassic');
}

↑クラシックエディタの場合は、WordPressに用意されている関数
remove_meta_box() を使用します。
こちらは、投稿画面に存在する「アイキャッチ画像」や「リビジョン」といった括りである
「メタボックス」を削除する、という概念になります。

こちらも、末尾の部分で
if( !current_user_can('administrator') ) {...
として、「管理者じゃなかった場合」にこの関数を実行する様にしています。

クラシックエディタの場合、固定ページに適用するには

上記のサンプルコードは、先程のブロックエディタの例と同様に「投稿」の場合です。

もし、クラシックエディタの「固定ページ」にも適用したい場合は

remove_meta_box('postimagediv', 'post', 'side');

↑この第二引数 'post' の部分を

'page' に変えることで適用が可能です。

それぞれの関数の公式解説ページ

【ブロックエディタ用】

remove_post_type_support() について

remove_post_type_support() – Function | Developer.WordPress.org
↑‘title’, ‘comments’ など、削除可能な項目についても、このページに一覧が掲載されています。

【クラシックエディタ用】

remove_meta_box() について
remove_post_type_support() – Function | Developer.WordPress.org
↑このページに、詳しい仕様が掲載されています。

この記事のまとめ

様々なノーコードWeb制作ツールの出現や、昨今では生成AIの登場により、日々進歩し続けるWeb制作業界

そんな中において、まだまだ制作現場で目にするケースも多々あるWordPress。

今回は、その「WordPressの投稿画面から、不要な項目をプラグインなしで削除する方法」についての記事を書いてみました。

この記事が皆さんのより良いWeb制作体験につながれば、嬉しく思います。

※この記事は内容の品質向上を目的に、随時更新を行う場合があります。

この記事をシェアする: