وقتی بر روی گزینه المنتور در وردپرس کلیک می کنید اما با خطا روبرو می شوید
قبل از همه چیز از بانک اطلاعات و فایل های هاست خود بکاپ بگیر.
کلا این موضوع خیلی مهم نیست اما اگر حساس هستی روی آن، این متن را مطالعه کن ممکن است کمکت کند که مشکل برطرف شود.
در زیر، خلاصهای از اصلاحات لازم و یک راهنمای گامبهگام سریع برای رفع این خطا در سایر سایتها ارائه کردهام.
### ✅ خلاصه مشکل و راهحل نهایی
مشکل اصلی: مسدود بودن دسترسی از ایران به سرورهای `assets.elementor.com` (به دلیل تحریم) باعث میشود اطلاعات صفحه “خانه” (Home Screen) دریافت نشود و خطای فانکشنال نشان داده شود.
هدف اصلاح: جلوگیری از نمایش خطا و خرابی سایت، حتی اگر اطلاعاتی از سرور دریافت نشود.
راهحل نهایی و قطعی: فقط ویرایش یک فایل کافی است. نیازی به تغییر چندین فایل نیست.
### 📁 فایل اصلی برای ویرایش: `filter-plugins.php`
مسیر فایل:
`/wp-content/plugins/elementor/modules/home/transformations/filter-plugins.php`
### 📝 کد اصلاحشده نهایی (کپی و جایگزین کن)
محتوای کامل این فایل را با کد زیر به طور کامل جایگزین کنید:
<?php
namespace Elementor\Modules\Home\Transformations;
if ( ! defined( ‘ABSPATH’ ) ) {
exit; // Exit if accessed directly.
}
class Filter_Plugins {
public function transform( array $home_screen_data ): array {
// بررسی و تضمین وجود آرایه ‘add_ons’
if ( ! isset( $home_screen_data[‘add_ons’] ) || ! is_array( $home_screen_data[‘add_ons’] ) ) {
$home_screen_data[‘add_ons’] = [];
}
// بررسی و تضمین وجود آرایه ‘pro_free_trial_popup’
if ( ! isset( $home_screen_data[‘pro_free_trial_popup’] ) || ! is_array( $home_screen_data[‘pro_free_trial_popup’] ) ) {
$home_screen_data[‘pro_free_trial_popup’] = [];
}
// پردازش فقط در صورتی که آرایهها خالی نباشند
if ( ! empty( $home_screen_data[‘add_ons’] ) ) {
$home_screen_data[‘add_ons’] = $this->get_add_ons_installation_status( $home_screen_data[‘add_ons’] );
}
if ( ! empty( $home_screen_data[‘pro_free_trial_popup’] ) ) {
$home_screen_data[‘pro_free_trial_popup’] = $this->get_pro_free_trial_popup( $home_screen_data[‘pro_free_trial_popup’] );
}
return $home_screen_data;
}
private function get_add_ons_installation_status( array $add_ons ): array {
if ( empty( $add_ons ) ) {
return [];
}
$installed_plugins = get_plugins();
$activated_plugins = get_option( ‘active_plugins’, [] );
foreach ( $add_ons as &$add_on ) {
if ( ! isset( $add_on[‘file_path’] ) ) {
$add_on[‘is_installed’] = false;
$add_on[‘is_activated’] = false;
continue;
}
$add_on[‘is_installed’] = isset( $installed_plugins[ $add_on[‘file_path’] ] );
$add_on[‘is_activated’] = in_array( $add_on[‘file_path’], $activated_plugins, true );
}
return $add_ons;
}
private function get_pro_free_trial_popup( array $pro_free_trial_popup ): array {
if ( empty( $pro_free_trial_popup ) ) {
return [];
}
$popup = $pro_free_trial_popup[0];
if ( ! is_array( $popup ) || ! isset( $popup[‘status’] ) ) {
return [];
}
if ( ‘active’ === $popup[‘status’] ) {
$transient_key = ‘elementor_free_trial_’ . get_current_user_id();
if ( ! get_transient( $transient_key ) ) {
$popup[‘is_visible’] = true;
set_transient( $transient_key, true, WEEK_IN_SECONDS );
} else {
$popup[‘is_visible’] = false;
}
} else {
$popup[‘is_visible’] = false;
}
return [ $popup ];
}
}
### 🛠️ چکلیست اجرای سریع برای سایتهای دیگر
۱. از طریق FTP یا مدیر فایل هاست به مسیر فایل بروید.
۲. از فایل اصلی `filter-plugins.php` یک کپی پشتیبان (Backup) بگیرید (مثلاً اسمش را به `filter-plugins.php.backup` تغییر دهید).
۳. فایل اصلی را ویرایش کرده و تمام محتوایش را با کد بالا جایگزین کنید.
۴. تغییرات را ذخیره و آپلود کنید.
۵. کش مرورگر و کش سایت (اگر از پلاگین کش استفاده میکنید) را پاک کنید.
۶. صفحه Elementor → Home را در پیشخوان وردپرس رفرش کنید. خطا باید رفع شده باشد (صفحه ممکن است خلوت باشد).
—
### ⚠️ نکات مهم و هشدار
کارایی: این اصلاح فقط جلوی خطا را میگیرد و مشکل دسترسی به سرور را حل نمیکند. بنابراین صفحه “خانه” خلوت خواهد بود.
آپدیت: با هر بار آپدیت پلاگین المنتور، این فایل ممکن است بازنویسی شود و تغییرات شما از بین برود. پس از آپدیت، ممکن است مجدداً نیاز به اعمال این اصلاح باشد.
راهحل دائمی: برای دسترسی کامل به همه امکانات (مثل کتابخانه قالبها)، راهحل دائمی استفاده از هاست یا VPN با IP خارج از ایران است.