ツールバーに「エディター切替」ボタンを追加する方法

Cocoonカスタマイズ集
この記事は約3分で読めます。
記事内に広告が含まれています。

はじめに

WordPressのテーマ「Cocoon」を利用していると、状況に応じ、Gutenbergエディターとクラシックエディターを切り替えたくなる場面があります。
通常は管理画面の設定ページまで移動して変更する必要がありますが、テストなどで頻繁に切り替えたい場合は手間がかかります。

そこで、ツールバーに「エディター切替」ボタンを追加し、簡単に切り替えられるようにします。

この記事では、その方法について説明します。

完成イメージ

実装手順

以下のコードをfunctions.phpに追加します。

// ツールバーにメニュー追加
add_action('admin_bar_menu', function ($wp_admin_bar) {
  // 権限チェック
  if (!current_user_can('manage_options')) {
    return;
  }

  // 現在のCocoonエディター設定を取得
  $is_gutenberg_enabled = (bool) is_gutenberg_editor_enable();

  // 切り替え後の状態を設定
  $next_status = $is_gutenberg_enabled ? 0 : 1;

  // 表示ラベルを設定
  $label = $is_gutenberg_enabled ? 'エディター:Gutenberg' : 'エディター:クラシック';

  // 現在のページURLにパラメータを設定
  $editor_url = add_query_arg(['editor_mode' => $next_status]);

  // ツールバーにメニューを登録
  $wp_admin_bar->add_node([
    'id'    => 'editor-mode',
    'title' => esc_html($label),
    'href'  => wp_nonce_url($editor_url, 'editor_mode_action', 'editor_mode_nonce'),
    'meta'  => [
      'title' => 'Cocoonのエディター設定を切り替える',
    ],
  ]);
}, 9999);


// 管理画面からの設定データ更新
add_action('init', function () {
  if (!isset($_GET['editor_mode'])) {
    return;
  }

  // nonceチェック
  if (!isset($_GET['editor_mode_nonce']) || !wp_verify_nonce(sanitize_text_field(wp_unslash($_GET['editor_mode_nonce'])), 'editor_mode_action')) {
    wp_die('セキュリティチェックに失敗しました。');
  }

  // 権限チェック
  if (!current_user_can('manage_options')) {
    wp_die('権限がありません。');
  }

  // 切り替え後の値を取得
  $editor_mode = (int) $_GET['editor_mode'];
  $editor_mode = $editor_mode ? 1 : 0;

  // Cocoonの設定を更新
  set_theme_mod(OP_GUTENBERG_EDITOR_ENABLE, $editor_mode);

  wp_safe_redirect(remove_query_arg(['editor_mode', 'editor_mode_nonce']));
  exit;
});

さいごに

今回紹介した方法を使えば、WordPressの管理画面の奥深くにある設定ページへ移動することなく、ツールバーから直接Cocoonのエディターモードをワンクリックで切り替えることができるようになります。
検証作業などでGutenbergとクラシックエディターを頻繁に行き来するサイト管理者やブロガーの皆様にとって、日々の編集作業を効率化する非常に便利なカスタマイズです。

タイトルとURLをコピーしました