2026年6月17日

2026年6月17日

WordPressのブロックエディター(Gutenberg)が読み込まれない問題を解決する方法

はじめに

WordPress 5.0以降のブロックエディター(Gutenberg)が読み込まれない・エラーが出る場合、プラグインのJavaScript競合・メモリ不足・REST APIへのアクセス障害が原因であることがほとんどです。

症状・原因

  • 投稿編集画面を開くとグルグルが回り続けて編集できない
  • ブロックエディターが白い画面になる
  • 「予期しないエラーが発生しました」とエラーブロックが表示される
  • プラグインを追加した後からエディターが壊れた

解決手順

ステップ1:JavaScriptエラーを確認する

ブラウザの開発者ツールでエラーを確認:
1. 投稿編集画面を開く
2. F12 キーを押して開発者ツールを開く
3. 「コンソール」タブを選択
4. 赤いエラーメッセージを確認
   → 例: "Cannot read property 'registerBlockType' of undefined"
   → 例: "Uncaught TypeError: wp.blocks is undefined"
   → 例: "Failed to load resource: the server responded with 404"
5. エラーのファイル名からどのプラグインが原因か特定
# REST API が正常に動作するか確認
curl https://example.com/wp-json/wp/v2/posts
# 401 Unauthorized または JSON が返れば正常
# 404 または HTML が返る場合は REST API に問題がある

# WP-CLI で REST API を確認
wp eval "echo rest_url();"

ステップ2:プラグイン競合を切り分ける

# 全プラグインを無効化してエディターが動くか確認
wp plugin deactivate --all

# ブラウザでエディターを確認(Ctrl+F5 でキャッシュクリア)
# 動く場合はプラグイン競合が原因

# プラグインを1つずつ有効化して原因を特定
wp plugin activate plugin-name
# エディターを確認 → 壊れたらそのプラグインが原因

# 問題のプラグインを除いて全プラグインを有効化
wp plugin activate --all
wp plugin deactivate problem-plugin
// functions.php: 特定のスクリプトがエディターと競合する場合
add_action('enqueue_block_editor_assets', function(): void {
    // 競合するスクリプトを除去
    wp_dequeue_script('conflicting-script-handle');
    wp_dequeue_style('conflicting-style-handle');
}, 100);

ステップ3:REST API の問題を解決する

# .htaccess の REST API ブロックを確認
grep -i "rest" /var/www/html/.htaccess

# Authorization ヘッダーの問題(Apache)
# .htaccess に追加
# .htaccess: REST API に必要なヘッダーを許可
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
</IfModule>
// functions.php: REST API が無効化されている場合に再有効化
// ❌ 以下のコードが原因で REST API がブロックされることがある
// remove_filter('rest_authentication_errors', ...);

// REST API のアクセスを確認
add_filter('rest_authentication_errors', function($result) {
    if (!empty($result)) {
        return $result;
    }
    if (!is_user_logged_in()) {
        return new WP_Error('rest_not_logged_in', 'ログインが必要です', ['status' => 401]);
    }
    return $result;
});

ステップ4:PHP メモリとタイムアウトを増やす

// wp-config.php: エディターに必要なメモリを確保
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
# エディターが使用するメモリを確認
wp eval "
\$post = get_post(1);
\$before = memory_get_usage(true);
// ブロックのパース
parse_blocks(\$post->post_content);
\$after = memory_get_usage(true);
echo round((\$after - \$before) / 1024 / 1024, 2), 'MB for block parsing';
"

ステップ5:Classic Editor に切り替える

# Classic Editor プラグインをインストール・有効化
wp plugin install classic-editor --activate

# または functions.php でブロックエディターを無効化
// functions.php: ブロックエディターを無効化して旧エディターを使う
add_filter('use_block_editor_for_post', '__return_false');
add_filter('use_block_editor_for_post_type', '__return_false');

// 投稿タイプ別にエディターを切り替える
add_filter('use_block_editor_for_post_type', function(bool $use, string $post_type): bool {
    // product 投稿タイプはクラシックエディターを使う
    if ($post_type === 'product') {
        return false;
    }
    return $use;
}, 10, 2);
# Gutenberg プラグインを最新版に更新(コアと競合することがある)
wp plugin update gutenberg

# コアの WordPress を最新版に更新
wp core update
wp core update-db

注意事項

  • プラグインを全て無効化してもエディターが動かない場合は、テーマが原因の可能性があります。デフォルトテーマ(Twenty Twenty-Four等)に一時的に切り替えて確認してください
  • REST APIが403 Forbiddenを返す場合、セキュリティプラグイン(Wordfence等)やサーバーのWAFがブロックしている可能性があります。セキュリティプラグインの除外設定にWordPressの管理者IPを追加してください
  • ブロックエディターは多くのJavaScriptリソースを読み込むため、サーバーのレスポンスが遅いと読み込みタイムアウトすることがあります

まとめ

ブロックエディター読み込み不良の解決は①ブラウザのF12コンソールでJavaScriptエラーを確認しエラーファイルからプラグイン原因を特定、②wp plugin deactivate --all→1つずつ有効化でプラグイン競合を切り分け、③curl https://example.com/wp-json/wp/v2/postsでREST APIの疎通確認と.htaccessのAuthorizationヘッダー許可、④WP_MEMORY_LIMIT='256M'でメモリを確保、⑤緊急回避策としてClassic Editorプラグインまたはuse_block_editor_for_post=__return_falseでクラシックエディターに切り替えます。

お気軽にご相談ください

お見積りへ お問い合わせへ