2026年5月21日
2026年5月21日
Elementorのエラーを解決する方法
はじめに
Elementorの「データを保存できませんでした」エラー・エディターが白くなる・フロントエンドのレイアウトが崩れる問題は、PHPメモリ不足・プラグイン競合・ElementorのCSS/キャッシュが古くなっていることが原因です。
症状・原因
- 「データを保存できませんでした」ダイアログが出る
- Elementorエディターが白い画面・ロードが終わらない
- フロントエンドでElementorのCSSが読み込まれずデザインが崩れる
- 特定のウィジェットだけ表示されない
解決手順
ステップ1:エラーの詳細を確認する
# WordPressのデバッグログを有効化
wp config set WP_DEBUG true --raw --type=constant
wp config set WP_DEBUG_LOG true --raw --type=constant
wp config set WP_DEBUG_DISPLAY false --raw --type=constant
# ログを確認
tail -50 wp-content/debug.log | grep -i elementor
# PHPメモリ上限を確認
wp eval "echo WP_MEMORY_LIMIT . ' / ' . WP_MAX_MEMORY_LIMIT;"
# Elementorのシステム情報を確認
wp eval "
if (class_exists('\Elementor\Core\Debug\Debug')) {
echo 'Elementor version: ' . ELEMENTOR_VERSION . PHP_EOL;
}
echo 'Memory limit: ' . ini_get('memory_limit') . PHP_EOL;
echo 'Max execution time: ' . ini_get('max_execution_time') . PHP_EOL;
"
ステップ2:メモリとPHP設定を修正する
// wp-config.php: Elementorに必要なメモリを確保
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '512M');
# .htaccess: PHP設定を上書き
php_value memory_limit 256M
php_value max_execution_time 300
php_value upload_max_filesize 64M
php_value post_max_size 64M
# Elementorのキャッシュを削除
wp eval "
if (class_exists('\Elementor\Plugin')) {
\Elementor\Plugin::instance()->files_manager->clear_cache();
echo 'Elementor cache cleared';
}
"
# Elementorのデータを再生成
wp elementor flush-css # Elementor CLI がある場合
# WP-CLI でElementorのCSS再生成
wp eval "
global \$wpdb;
// Elementorのポストメタからキャッシュをクリア
\$wpdb->query(\"DELETE FROM {$wpdb->postmeta} WHERE meta_key = '_elementor_css'\");
echo 'Elementor CSS cache deleted from DB';
"
ステップ3:Elementorのデータ保存エラーを修正する
// functions.php: Elementorの保存エラー対策
// ① REST API を使った保存が失敗する場合
add_filter('elementor/document/save/data', function(array $data, \Elementor\Core\Base\Document $document): array {
// 保存データのサイズを確認
$size = strlen(json_encode($data));
if ($size > 5 * 1024 * 1024) { // 5MB超
error_log(sprintf('[Elementor] Large save data: %dMB for post %d',
$size / 1024 / 1024, $document->get_id()));
}
return $data;
}, 10, 2);
// ② nonceの有効時間を延長(長時間編集でタイムアウトする場合)
add_filter('nonce_life', function(int $life): int {
if (isset($_REQUEST['action']) && str_starts_with($_REQUEST['action'], 'elementor')) {
return DAY_IN_SECONDS; // 24時間
}
return $life;
});
// ③ Elementor の保存前後にログ
add_action('elementor/document/before_save', function(\Elementor\Core\Base\Document $document): void {
error_log('[Elementor] Saving post: ' . $document->get_id());
});
add_action('elementor/document/after_save', function(\Elementor\Core\Base\Document $document): void {
error_log('[Elementor] Saved post: ' . $document->get_id());
});
ステップ4:フロントエンドのCSSが壊れる問題を修正する
# Elementor CSS を再生成
wp eval "
\$posts = get_posts([
'post_type' => 'any',
'meta_key' => '_elementor_edit_mode',
'meta_value' => 'builder',
'numberposts' => -1,
'fields' => 'ids',
]);
foreach (\$posts as \$post_id) {
delete_post_meta(\$post_id, '_elementor_css');
}
echo count(\$posts) . '件のElementor CSSキャッシュを削除しました';
"
# Elementorのアセットを再生成
wp eval "
if (class_exists('\Elementor\Plugin')) {
\Elementor\Plugin::instance()->files_manager->clear_cache();
}
"
// functions.php: Elementor CSS の出力モードを変更
add_filter('elementor/frontend/print_google_fonts', '__return_false'); // Google Fonts を無効化
// 外部CSS読み込みを最適化
add_action('elementor/frontend/after_register_styles', function(): void {
// Elementor の不要なアイコンフォントを削除
wp_deregister_style('elementor-icons');
wp_deregister_style('elementor-icons-fa-solid');
});
// Elementor のインラインCSSを有効化(外部ファイル生成の問題を回避)
add_filter('elementor/frontend/builder_content_data', function(array $data, int $post_id): array {
return $data;
}, 10, 2);
ステップ5:プラグイン競合を切り分ける
# Elementor以外のプラグインを全て無効化してテスト
wp plugin list --status=active --fields=name | grep -v elementor | while read plugin; do
wp plugin deactivate "$plugin" 2>/dev/null
done
# Elementorの動作をテスト後、プラグインを1つずつ有効化
wp plugin activate contact-form-7
# テスト → 問題があれば contact-form-7 が原因
# Elementorのセーフモードを有効化(管理画面から)
# Elementor → ツール → 一般 → セーフモード を有効
# Elementorのデータを修復
wp eval "
if (class_exists('\Elementor\Plugin')) {
// Elementorのデータベーステーブルを確認
\Elementor\Plugin::instance()->uploads_manager->get_temp_dir();
}
"
// functions.php: Elementorと他プラグインの競合を防ぐ
// jQuery競合を防ぐ
add_action('elementor/frontend/before_enqueue_scripts', function(): void {
// jQueryをフッターに移動する処理を無効化(Elementorはヘッダーに必要)
remove_action('wp_enqueue_scripts', 'move_jquery_to_footer', 99);
});
// 他のページビルダーとの競合を防ぐ
add_filter('elementor/editor/localize_settings', function(array $settings): array {
$settings['i18n']['confirm_delete'] = '本当に削除しますか?';
return $settings;
});
注意事項
- Elementorのエディターは最低256MBのPHPメモリが必要です。共有ホスティングでメモリ制限が低い場合は、ホスティング会社にメモリ上限の引き上げを依頼してください
- Elementorのキャッシュを削除するとページが一時的に遅くなります(次回アクセス時にCSSが再生成されるため)。アクセスの少ない時間帯に行ってください
- Elementor Proを使用している場合、Elementor(無料版)とElementor Proのバージョンが一致していないとエラーになることがあります。両方を最新版に更新してください
まとめ
Elementorエラーの解決は①WP_DEBUG_LOGでエラー詳細を確認してPHPメモリ・タイムアウトを特定、②WP_MEMORY_LIMIT='256M'と.htaccessでPHP設定を引き上げ、③_elementor_cssメタを削除してfiles_manager->clear_cache()でCSS再生成、④nonce_lifeフィルターで長時間編集時のタイムアウトを延長、⑤wp plugin deactivateで競合プラグインを切り分けセーフモードで動作を確認します。