【WordPress】編集画面の「プレビューボタン」を非表示にする方法

【WordPress】編集画面の「プレビューボタン」を非表示にする方法 WordPress

WordPress の投稿・固定ページ編集画面では、デフォルトで「プレビュー」ボタンが表示されています。運用上、誤ってプレビューを押されると困る場合や、特定のユーザー権限ではプレビューを利用させたくない場合は、このボタンを非表示にできます。ここでは functions.php などに記述して対応する方法を紹介します。

スポンサーリンク

CSSで強制的に非表示にする

最も簡単なのは、管理画面専用の CSS を追加して「プレビューボタン」を隠す方法です。

functions.php:全ユーザー一律で非表示
<?php
// 管理画面用CSSを追加
add_action('admin_head', function () {
    echo '<style>
        #post-preview,
        .preview.button { display: none !important; }
    </style>';
});

この方法では全ユーザーに対して一律で「プレビューボタン」が非表示になります。

権限によって制御する

特定の権限(例:投稿者)は非表示にし、管理者は表示させたい場合は条件分岐を使います。

functions.php:管理者以外は非表示
<?php
add_action('admin_head', function () {
    if (!current_user_can('manage_options')) {
        echo '<style>
            #post-preview,
            .preview.button { display: none !important; }
        </style>';
    }
});
管理者判定にはmanage_optionsを使う
current_user_can('administrator')のようにロール名をそのままケイパビリティとして渡す書き方は、WordPressが管理者ロールに慣習的に「administrator」という名前そのもののケイパビリティも一緒に付与しているというレガシーな仕様に依存しています。セキュリティ強化系プラグインなどでこの慣習的なケイパビリティが削除されている環境では、本物の管理者でもプレビューボタンが非表示になってしまう可能性があります。current_user_can('manage_options')のような、実際の権限に基づいたチェックを使いましょう。

プレビューボタンを完全に削除する(PHPで)

CSS で隠すのではなく、サーバーサイドで出力自体を止めたい場合は、post_submitbox_misc_actions フックを利用します。

functions.php:投稿タイプごとの制御
<?php
add_action('post_submitbox_misc_actions', function () {
    global $post;
    // 投稿タイプに応じて制御したい場合
    if ($post->post_type === 'post') {
        ?>
        <style>
            #post-preview,
            .preview.button { display: none !important; }
        </style>
        <?php
    }
});

よくある質問(FAQ)

Q管理画面の投稿編集画面にプレビューボタンを表示するには?
AGutenbergでは画面右上の三点メニューから「プレビュー」を選択できます。クラシックエディターは「プレビュー」ボタンが標準で表示されます。非表示になっている場合は「表示オプション」タブを確認してください。
Qプレビューリンクを別タブで開くよう変更するには?
Apreview_post_linkフィルターでURLを取得し、JavaScriptでtarget=”_blank”を付けて開く処理を管理画面に追加します。またはEditorでプレビューを選ぶ際に「新しいタブ」オプションを選択します。
QプレビューURLをカスタムドメインや別環境に変更するには?
Apreview_post_linkフィルターでURLを書き換えます。ステージング環境のURLにプレビューを向ける場合などに利用します。

まとめ

  • 管理画面 CSS を追加して非表示にするのが最も手軽
  • current_user_can() で権限ごとに制御できる(管理者判定にはmanage_optionsを使う)
  • 投稿タイプごとに条件分岐を加えれば柔軟に対応可能

運用ルールに応じて「全体的に隠す」「権限ごとに隠す」を使い分けると安全です。