مشکلات و راه حل ها
سایت انجام شده:gilzar.com
وضعیت:حل شده
تحلیل مشکل:
سی اس اس سایت ناقص لود میشد و خطای کنسول این بود(تصویر):

فایلهای post-XXXX.css معمولاً به CSS تولیدشده توسط Elementor مربوط هستند
مرحله ۱ — بازسازی فایلهای CSS المنتور
وارد پیشخوان وردپرس شوید:
Elementor ← Tools ← General
سپس گزینهای با عنوان Regenerate CSS & Data رو زدیم
در مرحله بعد از قسمت /wp-content/uploads/elementor/css/ چک کزدیم دیدیم محتوای پوشه خالیه پس مزحله سوم رو اجرا کردیم:در بعضی نسخهها این گزینه زیر بخش Advanced قرار دارد.
مرحله 3:Elementor ← Settings ← Performance
گزینه CSS Print Method را پیدا کن و مقدارش را روی Internal Embedding بزار
راه حل ها:
سایت انجام شده:arabanaco.com
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کدی که در باکس وارد کردم رو در کد اسنیپ گذاشتم
کدنویسی:
/** * WooCommerce: Lock billing province to Gilan. * Keep the city field editable. */ function dr_gilan_state_code() { if ( ! function_exists('WC') || ! WC()->countries ) { return ''; } $states = WC()->countries->get_states('IR'); foreach ( (array) $states as $code => $name ) { $name = str_replace( array('ي', 'ك'), array('ی', 'ک'), wp_strip_all_tags($name) ); if ( strpos($name, 'گیلان') !== false || stripos($name, 'Gilan') !== false ) { return (string) $code; } } return ''; } // Limit Iran's province list to Gilan. add_filter('woocommerce_states', function($states) { if (empty($states['IR']) || !is_array($states['IR'])) { return $states; } foreach ($states['IR'] as $code => $name) { $normalized = str_replace( array('ي', 'ك'), array('ی', 'ک'), wp_strip_all_tags($name) ); if ( strpos($normalized, 'گیلان') !== false || stripos($normalized, 'Gilan') !== false ) { $states['IR'] = array($code => $name); break; } } return $states; }, 999); // Set the default billing country and province. add_filter('default_checkout_billing_country', function() { return 'IR'; }); add_filter('default_checkout_billing_state', function() { return dr_gilan_state_code(); }); // Keep the billing province field limited to Gilan. add_filter('woocommerce_checkout_fields', function($fields) { $gilan = dr_gilan_state_code(); if ($gilan && isset($fields['billing']['billing_state'])) { $states = WC()->countries->get_states('IR'); $fields['billing']['billing_state']['type'] = 'select'; $fields['billing']['billing_state']['options'] = $states; $fields['billing']['billing_state']['default'] = $gilan; $fields['billing']['billing_state']['required'] = true; } return $fields; }, 999); // Force Gilan into the submitted checkout data before validation. add_filter('woocommerce_checkout_posted_data', function($data) { $gilan = dr_gilan_state_code(); if ($gilan) { $data['billing_country'] = 'IR'; $data['billing_state'] = $gilan; } return $data; }, 999);
سایت انجام شده:arabanaco.com
وضعیت:حل شده
تحلیل مشکل:
-
شناسایی مشکل: سایدکارت WoodMart از سه محصول فقط دو محصول را نمایش میداد، اما مبلغ هر سه محصول محاسبه میشد.
-
بررسی HTML: با استفاده از Console مرورگر و دستور productsFound متوجه شدیم هر سه محصول داخل کدهای صفحه وجود دارند.
-
پیدا کردن علت: بررسی کردیم و مشخص شد:
-
محصول اول: display: flex ✅
-
محصول دوم: display: flex ✅
-
محصول سوم: display: none ❌
-
رفع مشکل: با کد CSS زیر نمایش محصولات را فعال کردیم:
.cart-widget-side .woocommerce-mini-cart-item {
display: flex !important;
}
شناسایی مشکل: سایدکارت WoodMart از سه محصول فقط دو محصول را نمایش میداد، اما مبلغ هر سه محصول محاسبه میشد.
بررسی HTML: با استفاده از Console مرورگر و دستور productsFound متوجه شدیم هر سه محصول داخل کدهای صفحه وجود دارند.
پیدا کردن علت: بررسی کردیم و مشخص شد:
-
محصول اول:
display: flex✅ -
محصول دوم:
display: flex✅ -
محصول سوم:
display: none❌
رفع مشکل: با کد CSS زیر نمایش محصولات را فعال کردیم:
.cart-widget-side .woocommerce-mini-cart-item {
display: flex !important;
}
راه حل ها:
کدنویسی:
.cart-widget-side .woocommerce-mini-cart-item { display: flex !important; }
سایت انجام شده:itavilaco,com
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد زیر را در اسنیپ وارد کنید
کدنویسی:
/** * SVG icons for WordPress / Woodmart menus */ // Allow SVG uploads for administrators. add_filter('upload_mimes', function ($mimes) { if (current_user_can('manage_options')) { $mimes['svg'] = 'image/svg+xml'; } return $mimes; }); // Add custom icon URL field. add_action('wp_nav_menu_item_custom_fields', function ($item_id) { $icon = get_post_meta($item_id, '_menu_svg_icon', true); ?>
<label for="menu-svg-"> آدرس آیکن SVG: <input type="url" class="widefat" id="menu-svg-" name="menu_svg_icon[]" value="" placeholder="https://example.com/icon.svg" />
ID, '_menu_svg_icon', true ); if (empty($icon)) { return $item_output; } $path = wp_parse_url($icon, PHP_URL_PATH); if ( !is_string($path) || strtolower(pathinfo($path, PATHINFO_EXTENSION)) !== 'svg' ) { return $item_output; } $image = 'سایت انجام شده:arabanaco.com
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد زیر را در کد اسنیپ اضافه کن:
کدنویسی:
add_filter( 'posts_clauses', 'elementor_loop_sort_stock_first', 20, 2 ); function elementor_loop_sort_stock_first( $clauses, $query ) { if ( is_admin() ) { return $clauses; } // فقط کوئری محصولات ووکامرس $post_type = $query->get('post_type'); if ( $post_type !== 'product' && ! (is_array($post_type) && in_array('product', $post_type)) ) { return $clauses; } global $wpdb; // گرفتن وضعیت موجودی $clauses['join'] .= " LEFT JOIN {$wpdb->postmeta} AS stock_status_sort ON {$wpdb->posts}.ID = stock_status_sort.post_id AND stock_status_sort.meta_key = '_stock_status' "; // اول موجودها، بعد ناموجودها، سپس جدیدترینها $clauses['orderby'] = " CASE WHEN stock_status_sort.meta_value = 'instock' THEN 1 WHEN stock_status_sort.meta_value = 'outofstock' THEN 2 ELSE 3 END ASC, {$wpdb->posts}.post_date DESC "; return $clauses; }
سایت انجام شده:parsparts.com
وضعیت:حل شده
تحلیل مشکل:
- *موارد حل مشکل بسیار کندی سایت پارس پارتز:**پارت اول:*
1- فایل error_log روت هاست بررسی و تحلیل آن به هوش مصنوعی داده شد تا در صورت مشکل آن را هاستینگ بررسی و برطرف کند.
2- منابع مصرفی Ram و Cpu سایت از بخش نمودارها بررسی شد.
3- ابتدا سوالات زیر از کاربر و مشتری پرسیده شد:
- استوری فروش ویژه تو پیجتون گذاشتید؟ (کاربر زیادی به یکباره داخل سایت سرازیر میشه و از حالت عادی خارج میشه مصرف نرمال)
- تبلیغ استوری یا سایت رفتید؟ (کاربر زیادی به یکباره داخل سایت سرازیر میشه و از حالت عادی خارج میشه مصرف نرمال)
- نرم افزار حسابداری رو اپدیت کلی یکباره زدید؟ (باعث اتصال رفت و برگشتی زیاد با نرم افزار حسابداریتون میشه و پروسه سایت رو درگیر خودش میکنه)
- قیمت هارو یکباره از طریق سایت دستی آپدیت زدید؟ (به دیتابیس به یکبار بخاطر اجرای SQL فشار زیادی میاره)
4- با افزونه updraft بکاپگرفته شد.
5- تمامی افزونه ها غیرفعال شد و مشکل کندی حل نشد.
3- قالب تغییر کرد و مشکل کندی حل نشد.
4- درخواست تغییر نود هاست سایت داده شد به پارس پک بازم مشکل حل نشد و سایت بسیار کند بود.
*پارت دوم:*
1. با تغییر سرور و هاستینگ مشکل حل نشد و مشخص شد از منابع Ram و Cpu نبود.
2. مشکل اصلی از طریقه افزونه Query Monitor (بروزترین نسخه) از بخش Database queries و Slow Queries ها با تحلیل هوش مصنوعی شناسایی شد.
3. وارد PhpMyAdmin شدم و مرتب سازی بر اساس سنگین ترین جداول گذاشته شد تا جداول مشکوک به باعث ایجاد کندی شناسایی شود.
4. افزونه independent analytics از بخش از افزونه ها پاک شد و بجاش از سایت Statsfa.com استفاده شد.
5. جدول های بجا مانده از افزونه فوق آمارگیر از دیتابیس Phpmyadmin پاک و Drop شد.
6. افزونه Meli optimizer بخاطر قطع ارتباط دسترسی افزونه های لایسنس دار با مخزن منبع خود غیرفعال شد تا ارورهای لایسنس قید شده در Slow Queries برطرف شود یا اینکه افزونه هایی نظیر (المنتور پرو، راست چین و ...) در لیست استثنائات قرار داده شود.
7. از پیکربندی ووکامرس و تب پیشرفته و سپس تب امکانات نسخه سایت از حالت "ذخیرهسازی نوشتههای وردپرس (قدیمی)" به حالت"ذخیرهسازی سفارش با کارایی بالا (توصیه شده)" تغییر پیدا کرد(افزونه هایی که باعث تداخل میشد شناسایی نشد).
8. بخش ضربان قلب افزونه WP Rocket رو حالت غیرفعال قرار گرفت تا در پس زمینه اجرا نشود.
9. سایر افزونه های مشکوم مانند تغییر قیمت دست جمعی Advanced Bluck woocemrce نیز غیرفعال و حذف شد.
10. افزونه هایی مثل دیجیتس مشکوک به کند کردن سایت هست و پیشنهاد میشود از افزونه های فارسی مانند "ورودک" و "پینوا" استفاده شود.
11. سرعت خوب شد.
12. نکته مهم: تست درگاه زده شد و به درگاه پرداخت نمیرفت و پیغام در صفحه تسویه حساب *" خطایی در پردازش سفارش شما رخ داده است. لطفا قبل از ثبت مجدد سفارش، هرگونه هزینهای را در روش پرداخت خود بررسی کنید و سابقه سفارش خود را مرور کنید. "* ظاهر میشد، متوجه شدیم که بخاطر گذاشتن روی حالت جدید "ذخیرهسازی سفارش با کارایی بالا (توصیه شده)" بود، مجددا به حالت قدیم "ذخیرهسازی نوشتههای وردپرس (قدیمی)"، علت؟ ناسازگاری افزونه های قدیمی با نسخه جدید HPOS هست.فعلا روی همین حالت بماند تا بعدا فکر اساسی شود. ضمنا برگشتن به حالت قدیم باعث شد سرعت کم نشود.
- افزونه independents analysuc از هر کاربر جدول در دیتا بیس میساخت که با غیر فعال کردنش و حذف جدولش به صورت دستی سرعت بهتر شد.
- گزینه هارت بیت در افزونه wp rocket خاموش شد
- در پیکر بندی ووکامرس بخش پیشرفته و امکانات گزینه حالت سازگاری را فعال کنید را بزن و وقتی دکمه اوکی رو دیدی باید بالاتر از این گزینه،گزینه ی ذخیره سازی سفارش با کارایی بالا (توصیه می شود) را روشن کنی
1- فایل error_log روت هاست بررسی و تحلیل آن به هوش مصنوعی داده شد تا در صورت مشکل آن را هاستینگ بررسی و برطرف کند.
2- منابع مصرفی Ram و Cpu سایت از بخش نمودارها بررسی شد.
3- ابتدا سوالات زیر از کاربر و مشتری پرسیده شد:
- استوری فروش ویژه تو پیجتون گذاشتید؟ (کاربر زیادی به یکباره داخل سایت سرازیر میشه و از حالت عادی خارج میشه مصرف نرمال)
- تبلیغ استوری یا سایت رفتید؟ (کاربر زیادی به یکباره داخل سایت سرازیر میشه و از حالت عادی خارج میشه مصرف نرمال)
- نرم افزار حسابداری رو اپدیت کلی یکباره زدید؟ (باعث اتصال رفت و برگشتی زیاد با نرم افزار حسابداریتون میشه و پروسه سایت رو درگیر خودش میکنه)
- قیمت هارو یکباره از طریق سایت دستی آپدیت زدید؟ (به دیتابیس به یکبار بخاطر اجرای SQL فشار زیادی میاره)
4- با افزونه updraft بکاپگرفته شد.
5- تمامی افزونه ها غیرفعال شد و مشکل کندی حل نشد.
3- قالب تغییر کرد و مشکل کندی حل نشد.
4- درخواست تغییر نود هاست سایت داده شد به پارس پک بازم مشکل حل نشد و سایت بسیار کند بود.
*پارت دوم:*
1. با تغییر سرور و هاستینگ مشکل حل نشد و مشخص شد از منابع Ram و Cpu نبود.
2. مشکل اصلی از طریقه افزونه Query Monitor (بروزترین نسخه) از بخش Database queries و Slow Queries ها با تحلیل هوش مصنوعی شناسایی شد.
3. وارد PhpMyAdmin شدم و مرتب سازی بر اساس سنگین ترین جداول گذاشته شد تا جداول مشکوک به باعث ایجاد کندی شناسایی شود.
4. افزونه independent analytics از بخش از افزونه ها پاک شد و بجاش از سایت Statsfa.com استفاده شد.
5. جدول های بجا مانده از افزونه فوق آمارگیر از دیتابیس Phpmyadmin پاک و Drop شد.
6. افزونه Meli optimizer بخاطر قطع ارتباط دسترسی افزونه های لایسنس دار با مخزن منبع خود غیرفعال شد تا ارورهای لایسنس قید شده در Slow Queries برطرف شود یا اینکه افزونه هایی نظیر (المنتور پرو، راست چین و ...) در لیست استثنائات قرار داده شود.
7. از پیکربندی ووکامرس و تب پیشرفته و سپس تب امکانات نسخه سایت از حالت "ذخیرهسازی نوشتههای وردپرس (قدیمی)" به حالت"ذخیرهسازی سفارش با کارایی بالا (توصیه شده)" تغییر پیدا کرد(افزونه هایی که باعث تداخل میشد شناسایی نشد).
8. بخش ضربان قلب افزونه WP Rocket رو حالت غیرفعال قرار گرفت تا در پس زمینه اجرا نشود.
9. سایر افزونه های مشکوم مانند تغییر قیمت دست جمعی Advanced Bluck woocemrce نیز غیرفعال و حذف شد.
10. افزونه هایی مثل دیجیتس مشکوک به کند کردن سایت هست و پیشنهاد میشود از افزونه های فارسی مانند "ورودک" و "پینوا" استفاده شود.
11. سرعت خوب شد.
12. نکته مهم: تست درگاه زده شد و به درگاه پرداخت نمیرفت و پیغام در صفحه تسویه حساب *" خطایی در پردازش سفارش شما رخ داده است. لطفا قبل از ثبت مجدد سفارش، هرگونه هزینهای را در روش پرداخت خود بررسی کنید و سابقه سفارش خود را مرور کنید. "* ظاهر میشد، متوجه شدیم که بخاطر گذاشتن روی حالت جدید "ذخیرهسازی سفارش با کارایی بالا (توصیه شده)" بود، مجددا به حالت قدیم "ذخیرهسازی نوشتههای وردپرس (قدیمی)"، علت؟ ناسازگاری افزونه های قدیمی با نسخه جدید HPOS هست.فعلا روی همین حالت بماند تا بعدا فکر اساسی شود. ضمنا برگشتن به حالت قدیم باعث شد سرعت کم نشود.
راه حل ها:
سایت انجام شده:arabanaco.com
وضعیت:حل شده
تحلیل مشکل:
وقتی روی سایتم با دامنه domain.com کلیک میکنم ریدایرکت میشه به domain.cim/demo
در حالیکه این پوشه وجود نداره
راه حل ها:
این کد را به کد اسنیپ اضافه میکنیم:
کدنویسی:
add_action('template_redirect', function () { $current_url = $_SERVER['REQUEST_URI']; // جلوگیری از ریدایرکت به مسیر demo if (strpos($current_url, '/demo') !== false) { wp_safe_redirect(home_url('/')); exit; } }); remove_action('template_redirect', 'wp_redirect'); remove_action('template_redirect', 'wp_safe_redirect'); add_filter('wp_redirect', function($location) { if (strpos($location, '/demo') !== false) { return home_url('/'); } return $location; }, 999);
سایت انجام شده:arabana.com
وضعیت:حل شده
تحلیل مشکل:
خلاصه رفع مشکل ریدایرکت WordPress به /demo بعد از انتقال سایت
وضعیت اولیه: - سایت جدید در پوشه demo طراحی شده بود. - بعد از تکمیل،
محتوای قبلی به پوشه old منتقل شد و فایلهای سایت جدید به روت public_html
منتقل شدند. - مشکل: با ورود به domain.com سایت به domain.com/demo
ریدایرکت میشد و آنجا 404 نمایش داده میشد.
بررسیهای انجام شده: 1. بررسی index.php روت: - فایل استاندارد وردپرس بود
و هیچ اشارهای به demo نداشت.
2. بررسی .htaccess:
- ریدایرکت به demo وجود نداشت.
- فقط ریدایرکت دامنه arabanaco.ir به arabanaco.com وجود داشت.
3. بررسی Document Root در cPanel:
- مسیر صحیح بود: /public_html
4. بررسی دیتابیس:
- جستجوی demo در wp_options و سایر جداول انجام شد.
- چند مسیر قدیمی demo پیدا شد و موارد مربوط به مسیرها بررسی و اصلاح
شدند.
5. بررسی افزونهها:
- غیرفعال کردن افزونهها انجام شد.
- مشکل همچنان باقی بود، پس افزونهها عامل اصلی نبودند.
علت نهایی: - وردپرس هنوز آدرس قدیمی سایت را از تنظیمات خود میگرفت و به
مسیر /demo هدایت میکرد.
راهحل نهایی: در فایل: public_html/wp-config.php
قبل از خط: /* That’s all, stop editing! Happy publishing. */
این دو خط اضافه شد:
define(‘WP_HOME’,‘https://domain.com’);
define(‘WP_SITEURL’,‘https://domain.com’);
راه حل ها:
سایت انجام شده:Parsparts.com
وضعیت:حل شده
تحلیل مشکل:
اگر بنا به دلایل فراموشی پرداخت مالی سرویس نمایندگی هاست ما در پارس پک معلق شود سایت مشتریان بالا نخواهد آمد. اگر چنانچه با پرداخت مالی سایت مشتری که سالم در حال کار کرد بود و با پیغام وردپرس "سایت با خطا روبر شده است" مواجه شود چاره کار یکبار دانگرید ورژن php از 8.1 به ورژن 7.4 و ذخیره است و دوباره آپگرید به ورژن 8.1 و ذخیره است. این اتفاق برای سایت parsparts.com بوجود آمد که با این روش مرتفع شد.
راه حل ها:
سایت انجام شده:hatefnovin.ir
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد زیر رو در کد اسنیپ بزار و از بخش نمایش وارد فهرست ها شو و میتونی برای هر ایتم فهرست ایکن انتخاب کنی
کدنویسی:
// Allow SVG upload add_filter('upload_mimes', function($mimes){ $mimes['svg'] = 'image/svg+xml'; return $mimes; }); // Add SVG field to menu items add_action( 'wp_nav_menu_item_custom_fields', function($item_id){ $icon = get_post_meta( $item_id, '_menu_svg_icon', true ); ?>
ID, '_menu_svg_icon', true ); if($icon){ $title = '
سایت انجام شده:hatefnovin.ir
وضعیت:حل شده
تحلیل مشکل:
ابتدا داخل این مسیر فونت هاتو اپلود کن:
/demo/wp-content/themes/hello-elementor/fonts/iranyekanwebregular.woff
بعد از بخش سفارشی سازی سایت این کد رو اضافه کن:
/* fonts */
@font-face {
font-family: 'MyFont';
src: url('/demo/wp-content/themes/hello-elementor/fonts/iranyekanwebregular.woff') format('woff');
font-weight: 400;
}
body {
font-family: 'MyFont', sans-serif;
}
حالا در المنتور به هر ویجتی که خواستی این سی اس اس سفارشی رو بذه:
selector {
font-family: 'MyFont';
}
راه حل ها:
سایت انجام شده:rahmataval.ir
وضعیت:حل شده
تحلیل مشکل:
کانتینر (با کلاس read-more-wrapper)====>متن(با کلاس read-more-content) و دکمه(read-more-btn-class) و ویجت html
کدی که در html میزارید:👇
راه حل ها:
کدنویسی:
document.addEventListener('DOMContentLoaded', function() { // پیدا کردن دکمه و محتوا بر اساس کلاسهایی که در المنتور ست کردیم const btn = document.querySelector('.read-more-btn-class'); // کلاس را به دکمه در المنتور اضافه کنید const content = document.querySelector('.read-more-content'); if (btn && content) { // ابتدا کلاس collapsed را به محتوا میدهیم برای افکت محو شدگی content.classList.add('collapsed'); btn.addEventListener('click', function(e) { e.preventDefault(); if (!content.classList.contains('expanded')) { // باز کردن content.style.maxHeight = content.scrollHeight + 'px'; content.classList.add('expanded'); content.classList.remove('collapsed'); btn.querySelector('.elementor-button-text').innerText = 'بستن متن'; } else { // بستن content.style.maxHeight = '150px'; content.classList.remove('expanded'); content.classList.add('collapsed'); btn.querySelector('.elementor-button-text').innerText = 'مشاهده بیشتر'; } }); } });
سایت انجام شده:rahmataval.ir
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کدنویسی:
این یک راهنمای کامل و مرتب برای استفاده در پروژههای آیندهتان است. این ساختار بدون نیاز به افزونه سنگین، به شما اجازه میدهد هرجایی از سایت که نیاز داشتید، دکمه «مشاهده بیشتر» بسازید. --- ### راهنمای پیادهسازی قابلیت «مشاهده بیشتر» (Read More) در المنتور #### ۱. تنظیمات ویجتها در المنتور ابتدا باید به ویجتهای خود "شناسه" بدهید تا کد با آنها ارتباط برقرار کند. * **ویجت ویرایشگر متن (Text Editor):** * روی ویجت کلیک کنید. * به تب **پیشرفته (Advanced)** بروید. * در بخش **کلاسهای CSS**، عبارت زیر را دقیقاً بنویسید (بدون نقطه): `read-more-content` * **ویجت دکمه (Button):** * روی دکمه کلیک کنید. * به تب **پیشرفته (Advanced)** بروید. * در بخش **کلاسهای CSS**، عبارت زیر را دقیقاً بنویسید (بدون نقطه): `read-more-btn-class` #### ۲. اضافه کردن کد اصلی یک ویجت **HTML** را به انتهای صفحه (زیر دکمه یا متن) بکشید و کد زیر را داخل آن قرار دهید: ```html document.addEventListener('DOMContentLoaded', function() { const btn = document.querySelector('.read-more-btn-class'); const content = document.querySelector('.read-more-content'); if (btn && content) { // فعالسازی اولیه سایه content.classList.add('collapsed'); btn.addEventListener('click', function(e) { e.preventDefault(); if (!content.classList.contains('expanded')) { // باز شدن متن content.style.maxHeight = content.scrollHeight + 'px'; content.classList.add('expanded'); content.classList.remove('collapsed'); btn.querySelector('.elementor-button-text').innerText = 'بستن متن'; } else { // بسته شدن متن content.style.maxHeight = '150px'; /* این عدد باید با max-height در CSS یکی باشد */ content.classList.remove('expanded'); content.classList.add('collapsed'); btn.querySelector('.elementor-button-text').innerText = 'مشاهده بیشتر'; } }); } }); ``` --- ### ۳. نکات مهم برای پروژههای بعدی: 1. **اگر رنگ پسزمینه کانتینر شما سفید نیست:** در کد CSS بالا، قسمت `rgba(255, 255, 255, ...)` را پیدا کنید. عدد `255, 255, 255` کد رنگ سفید است. آن را با کد رنگ پسزمینه خودتان جایگزین کنید (مثلاً برای خاکستری روشن: `245, 245, 245`). 2. **تنظیم ارتفاع:** اگر میخواهید در حالت بسته، متن کوتاهتر یا بلندتر باشد، عدد `150px` را در دو جای کد (هم در CSS و هم در بخش `else` جاوا اسکریپت) تغییر دهید. 3. **چندین دکمه در یک صفحه:** اگر میخواهید در یک صفحه **چندین** بخش «مشاهده بیشتر» داشته باشید، ساختار کد باید کمی تغییر کند (از کلاس به جای ID استفاده کردیم تا همین الان هم قابلیت استفاده در چندین جا را داشته باشد، اما اگر با هم تداخل پیدا کردند، کافیست کلاسهای متفاوتی برای هر جفت متن و دکمه انتخاب کنید). این کد بسیار سبک است و هیچ فشاری به دیتابیس یا سرعت سایت شما وارد نمیکند. موفق باشید!
سایت انجام شده:rahmataval.ir
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد رو که اضافه کردی وارد کتابخانه رسانه شو و کنار هر عکس گزینه جدید تبدیل تصویر رو میبینی
کدنویسی:
این کد رو در کد اسنیپ بزاریم: // Add a button to the media row actions function add_webp_convert_button($actions, $post) { if ($post->post_mime_type === 'image/jpeg' || $post->post_mime_type === 'image/png') { $url = wp_nonce_url(admin_url('admin-ajax.php?action=convert_to_webp&attachment_id=' . $post->ID), 'convert_to_webp'); $actions['convert_to_webp'] = 'Convert to WebP'; } return $actions; } add_filter('media_row_actions', 'add_webp_convert_button', 10, 2); // Handle the conversion to WebP function convert_image_to_webp() { if (!current_user_can('edit_posts')) { wp_die(__('You do not have permission to edit this post.')); } $attachment_id = intval($_GET['attachment_id']); check_admin_referer('convert_to_webp'); $file = get_attached_file($attachment_id); $info = pathinfo($file); $new_file = $info['dirname'] . '/' . $info['filename'] . '.webp'; if ($info['extension'] === 'jpeg' || $info['extension'] === 'jpg' || $info['extension'] === 'png') { if ($info['extension'] === 'jpeg' || $info['extension'] === 'jpg') { $image = imagecreatefromjpeg($file); } elseif ($info['extension'] === 'png') { $image = imagecreatefrompng($file); } if ($image) { imagewebp($image, $new_file); imagedestroy($image); update_attached_file($attachment_id, $new_file); // Update the attachment metadata $metadata = wp_generate_attachment_metadata($attachment_id, $new_file); wp_update_attachment_metadata($attachment_id, $metadata); wp_safe_redirect(admin_url('upload.php')); exit; } else { wp_die(__('Error converting image to WebP.')); } } else { wp_die(__('Unsupported image format.')); } } add_action('wp_ajax_convert_to_webp', 'convert_image_to_webp'); add_filter( 'elementor_pro/custom_fonts/font_display', function( $current_value, $font_family, $data ) { return 'swap'; }, 10, 3 );
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کدنویسی:
selector { background: linear-gradient( 135deg, rgba(255,255,255,0.25), rgba(255,255,255,0.08) ); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid rgba(255,255,255,0.3); border-radius: 24px; box-shadow: 0 8px 32px rgba(0,0,0,0.1), inset 0 1px 0 rgba(255,255,255,0.3); }
سایت انجام شده:hatefnovin.ir
وضعیت:حل شده
تحلیل مشکل:
با استفاده از فیلتر Callback در همان ویجت Dynamic Field:
- ویجت Dynamic Field جتانجین را قرار دهید.
- Source: را روی
Post/Page Dataبگذارید. - Post Data: را روی Post ID (شناسه نوشته) بگذارید (در این حالت ابتدا یک عدد مثل
124نمایش داده میشود). - تیک گزینه Filter field output (فیلتر کردن خروجی فیلد) را در پایین همان پنل فعال کنید.
- در کادر Callback: از لیست کشویی تابع Get permalink by ID را انتخاب کنید.(این تابع شناسه نوشته را میگیرد و دقیقاً آدرس کامل URL آن را بهصورت متن چاپ میکند).
راه حل ها:
با استفاده از فیلتر Callback در همان ویجت Dynamic Field: ویجت Dynamic Field جتانجین را قرار دهید. Source: را روی Post/Page Data بگذارید. Post Data: را روی Post ID (شناسه نوشته) بگذارید (در این حالت ابتدا یک عدد مثل 124 نمایش داده میشود). تیک گزینه Filter field output (فیلتر کردن خروجی فیلد) را در پایین همان پنل فعال کنید. در کادر Callback: از لیست کشویی تابع Get permalink by ID را انتخاب کنید.(این تابع شناسه نوشته را میگیرد و دقیقاً آدرس کامل URL آن را بهصورت متن چاپ میکند).
سایت انجام شده:hatefnovin.ir
وضعیت:حل شده
تحلیل مشکل:
این هم یک **چکلیست کامل و تروتمیز** برای اینکه هر زمان خواستی روی پروژههای بعدی از قالب Hello Elementor یک نسخه اختصاصی (White-label) با برند دلخواهت بسازی، قدمبهقدم از روی آن پیش بروی:
---
### راهنمای ساخت قالب اختصاصی (Child Theme) با پایه هلو المنتور
> **نکته مهم:** همیشه باید قالب اصلی **Hello Elementor** روی سایت نصب باشد، اما آن را فعال نمیکنیم و چایلدتم ساختهشده را فعال میکنیم.
---
#### مرحله ۱: ساخت پوشه قالب
به مسیر زیر در فایل منیجر هاست (یا لوکال) بروید:
`wp-content/themes/`
یک پوشه جدید با نام انگلیسی دلخواه برند بسازید (با حروف کوچک و خط تیره).
*مثال:* `hatef-novin`
---
#### مرحله ۲: ساخت فایل `style.css`
داخل این پوشه جدید، فایلی به نام `style.css` بسازید و کدهای زیر را داخل آن قرار دهید (مشخصات را بر اساس نام برند جدید تغییر دهید):
```css
/*
Theme Name: هاتف نوین
Theme URI: https://hatefnovin.ir
Description: قالب اختصاصی هاتف نوین بر پایه Hello Elementor
Author: هاتف نوین
Author URI: https://hatefnovin.ir
Template: hello-elementor
Version: 1.0.0
Text Domain: hatef-novin
*/
```
> **قانون طلایی:** خط `Template: hello-elementor` حتماً باید دقیقاً به همین شکل بماند، چون ارتباط این قالب با قالب مادر را برقرار میکند.
---
#### مرحله ۳: ساخت فایل `functions.php`
داخل همان پوشه، فایلی به نام `functions.php` بسازید و این کدهای کامل را درون آن کپی کنید:
```php
<?php
// ۱. لود کردن استایلهای قالب والد (Hello Elementor)
add_action( 'wp_enqueue_scripts', 'custom_theme_enqueue_styles' );
function custom_theme_enqueue_styles() {
wp_enqueue_style(
'hello-elementor-parent-style',
get_template_directory_uri() . '/style.css'
);
}
// ۲. تغییر نام منوی «سلام / Hello Theme» در بخش «نمایش» پیشخوان
add_action( 'admin_menu', 'custom_theme_rename_admin_menu', 999 );
function custom_theme_rename_admin_menu() {
global $submenu;
if ( isset( $submenu['themes.php'] ) ) {
foreach ( $submenu['themes.php'] as $key => $item ) {
if ( isset( $item[2] ) && strpos( $item[2], 'hello' ) !== false ) {
$submenu['themes.php'][$key][0] = 'تنظیمات هاتف نوین'; // عنوان دلخواه منو
}
}
}
}
// ۳. تغییر کلمه «سلام» و «Hello Theme» در کل پیشخوان وردپرس
add_filter( 'gettext', 'custom_theme_replace_brand_text', 20, 3 );
function custom_theme_replace_brand_text( $translated_text, $text, $domain ) {
if ( is_admin() ) {
if ( $text === 'Hello Theme' || $text === 'Hello Elementor' || $translated_text === 'سلام' ) {
return 'هاتف نوین'; // نام برند اختصاصی شما
}
}
return $translated_text;
}
```
---
#### مرحله ۴: قرار دادن تصویر پوسته (اختیاری ولی حرفهای)
1. یک تصویر کاور یا لوگوی برند با سایز **۱۲۰۰ در ۹۰۰ پیکسل** طراحی کنید.
2. نام آن را دقیقاً `screenshot.png` بگذارید.
3. فایل را داخل همان پوشه چایلدتم آپلود کنید تا در بخش پوستهها، لوگوی برند شما نمایش داده شود.
---
#### مرحله ۵: فعالسازی
1. وارد پیشخوان وردپرس شوید.
2. به بخش **نمایش > پوستهها** بروید.
3. پوسته با نام اختصاصی خودتان را پیدا کرده و روی **فعال کردن (Activate)** کلیک کنید.
4. به مسیر **المنتور > ابزارها** رفته و یکبار دکمه **«بازتولید فایلها و دادهها»** را بزنید تا کش استایلها بازسازی شود.
راه حل ها:
سایت انجام شده:sun-cosmetic
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد اول رو در کد اسنیپ بزار, کد دوم در سی اس اس سفارشی کارت محصول جت انجینی گذاشته شه:
کدنویسی:
// افزودن کلاس ناموجودی به آیتمهای لیستینگ جتانجین add_filter('jet-engine/listing/item-classes', function($classes) { global $product; if ( ! is_a($product, 'WC_Product') ) { $product = wc_get_product(get_the_ID()); } if ( $product && ! $product->is_in_stock() ) { $classes[] = 'is-out-of-stock'; } return $classes; }); ---------------------------------------------------------------- کد دوم در سی اس اس سفارشی کارت محصول جت انجینی گذاشته شه: /* ۱. اعمال فیلتر خاکستری و ماتی روی کل کارت ناموجود */ .jet-listing-grid__item.is-out-of-stock { filter: grayscale(100%); -webkit-filter: grayscale(100%); opacity: 0.7; transition: all 0.3s ease-in-out; } /* ۲. محو کردن ملایم تصاویر داخل کارت */ .jet-listing-grid__item.is-out-of-stock img { filter: blur(1px); -webkit-filter: blur(1px); } /* ۳. استثنا کردن تیتر محصول از افکت خاکستری (شفاف و رنگی ماندن تیتر) */ .jet-listing-grid__item.is-out-of-stock .jet-listing-dynamic-title, .jet-listing-grid__item.is-out-of-stock .elementor-heading-title, .jet-listing-grid__item.is-out-of-stock .product-title, .jet-listing-grid__item.is-out-of-stock h2, .jet-listing-grid__item.is-out-of-stock h3 { filter: none !important; -webkit-filter: none !important; opacity: 1 !important; position: relative; z-index: 5; } /* ۴. غیرفعال کردن کلیک دکمه خرید */ .jet-listing-grid__item.is-out-of-stock .elementor-button, .jet-listing-grid__item.is-out-of-stock button, .jet-listing-grid__item.is-out-of-stock .add_to_cart_button { pointer-events: none; opacity: 0.5; } /* ۵. حالت هاور روی دسکتاپ (اختیاری: برای بازگشت ملایم رنگ با بردن ماوس) */ .jet-listing-grid__item.is-out-of-stock:hover { filter: grayscale(40%); -webkit-filter: grayscale(40%); opacity: 0.9; } .jet-listing-grid__item.is-out-of-stock:hover img { filter: blur(0); -webkit-filter: blur(0); }
سایت انجام شده:sun-cosmetic
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد زیر را در کد اسنیپ بزار ،سپس پیشخوان ← ووکامرس ← نوار ارسال رایگان در آنجا مبلغ حداقل سبد را تنظیم کنید؛ مثلاً 200000
کدنویسی:
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/*
|--------------------------------------------------------------------------
| تنظیمات پیشفرض
|--------------------------------------------------------------------------
*/
if ( ! defined( 'AWC_FREE_SHIPPING_DEFAULT_THRESHOLD' ) ) {
define( 'AWC_FREE_SHIPPING_DEFAULT_THRESHOLD', 2000000 );
}
/*
|--------------------------------------------------------------------------
| بررسی ووکامرس
|--------------------------------------------------------------------------
*/
add_action( 'plugins_loaded', function () {
if ( ! class_exists( 'WooCommerce' ) ) {
return;
}
/*
|--------------------------------------------------------------------------
| منوی تنظیمات
|--------------------------------------------------------------------------
*/
add_action( 'admin_menu', function () {
add_submenu_page(
'woocommerce',
'نوار ارسال رایگان',
'🚚 نوار ارسال رایگان',
'manage_woocommerce',
'awc-free-shipping',
'awc_free_shipping_settings_page'
);
} );
/*
|--------------------------------------------------------------------------
| ذخیره تنظیمات
|--------------------------------------------------------------------------
*/
add_action( 'admin_init', function () {
if ( empty( $_POST['awc_save_settings'] ) ) {
return;
}
if (
empty( $_POST['awc_nonce'] ) ||
! wp_verify_nonce(
sanitize_text_field( wp_unslash( $_POST['awc_nonce'] ) ),
'awc_settings_nonce'
)
) {
return;
}
$threshold = isset( $_POST['awc_threshold'] )
? absint( $_POST['awc_threshold'] )
: AWC_FREE_SHIPPING_DEFAULT_THRESHOLD;
$show_bar = isset( $_POST['awc_show_bar'] ) ? 'yes' : 'no';
update_option( 'awc_threshold', $threshold );
update_option( 'awc_show_bar', $show_bar );
add_action( 'admin_notices', function () {
echo 'تنظیمات نوار ارسال رایگان ذخیره شد.
';
} );
} );
/*
|--------------------------------------------------------------------------
| رایگان کردن هزینه ارسال بعد از رسیدن به حد نصاب
|--------------------------------------------------------------------------
*/
add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
if ( ! function_exists( 'WC' ) || ! WC()->cart ) {
return $rates;
}
$threshold = (float) get_option(
'awc_threshold',
AWC_FREE_SHIPPING_DEFAULT_THRESHOLD
);
if ( $threshold <= 0 ) {
return $rates;
}
$current_total = awc_get_cart_progress_amount();
if ( $current_total $rate ) {
/*
* اگر افزونه یا روش ارسال خاصی با این شناسه دارید،
* میتوانید آن را از رایگان شدن مستثنی کنید.
*/
if ( false !== strpos( $rate_id, 'plus_shipping' ) ) {
continue;
}
$rates[ $rate_id ]->cost = 0;
if (
isset( $rates[ $rate_id ]->taxes ) &&
is_array( $rates[ $rate_id ]->taxes )
) {
foreach ( $rates[ $rate_id ]->taxes as $tax_key => $tax_value ) {
$rates[ $rate_id ]->taxes[ $tax_key ] = 0;
}
}
if (
false === strpos(
$rates[ $rate_id ]->label,
'رایگان'
)
) {
$rates[ $rate_id ]->label .= ' - رایگان';
}
}
return $rates;
}, 999, 2 );
} );
/*
|--------------------------------------------------------------------------
| صفحه تنظیمات مدیریت
|--------------------------------------------------------------------------
*/
function awc_free_shipping_settings_page() {
$threshold = (int) get_option(
'awc_threshold',
AWC_FREE_SHIPPING_DEFAULT_THRESHOLD
);
$show_bar = get_option( 'awc_show_bar', 'yes' );
?>
🚚 نوار پیشرفت ارسال رایگان
<input
type="number"
id="awc_threshold"
name="awc_threshold"
value=""
min="0"
step="1000"
style="width:240px"
/>
مثال: برای ۲ میلیون تومان عدد 2000000 را وارد کنید.
نمایش نوار
'۰',
'1' => '۱',
'2' => '۲',
'3' => '۳',
'4' => '۴',
'5' => '۵',
'6' => '۶',
'7' => '۷',
'8' => '۸',
'9' => '۹',
)
);
}
/*
|--------------------------------------------------------------------------
| محاسبه مبلغ سبد
|--------------------------------------------------------------------------
*/
function awc_get_cart_progress_amount() {
if ( ! function_exists( 'WC' ) || ! WC()->cart ) {
return 0;
}
/*
* مبلغ کالاها بعد از تخفیف.
* هزینه ارسال و مالیات در این مبلغ محاسبه نمیشوند.
*/
$subtotal = (float) WC()->cart->get_subtotal();
$discount = (float) WC()->cart->get_discount_total();
return max( 0, $subtotal - $discount );
}
/*
|--------------------------------------------------------------------------
| دریافت اطلاعات نوار
|--------------------------------------------------------------------------
*/
function awc_get_shipping_progress_data() {
$threshold = (float) get_option(
'awc_threshold',
AWC_FREE_SHIPPING_DEFAULT_THRESHOLD
);
$current = awc_get_cart_progress_amount();
$remaining = max( 0, $threshold - $current );
$percent = $threshold > 0
? min( 100, round( ( $current / $threshold ) * 100 ) )
: 100;
$empty = (
! function_exists( 'WC' ) ||
! WC()->cart ||
WC()->cart->is_empty()
);
return array(
'threshold' => $threshold,
'current' => $current,
'remaining' => $remaining,
'percent' => $percent,
'reached' => $current >= $threshold,
'empty' => $empty,
);
}
/*
|--------------------------------------------------------------------------
| ساخت HTML نوار
|--------------------------------------------------------------------------
*/
function awc_render_shipping_bar() {
if ( 'yes' !== get_option( 'awc_show_bar', 'yes' ) ) {
return '';
}
$data = awc_get_shipping_progress_data();
if ( $data['empty'] ) {
return '';
}
$remaining = awc_fa_numbers(
number_format_i18n( $data['remaining'] )
);
ob_start();
?>
<div
class="awc-shipping-progress"
data-percent=""
data-reached=""
>
ارسال رایگان شد 🎉
تومان
تا ارسال رایگان
<div
class="awc-shipping-progress__fill "
style="width:%;"
>
تنظیمات نوار ارسال رایگان ذخیره شد.
🚚 نوار پیشرفت ارسال رایگان
|
<input
type="number"
id="awc_threshold"
name="awc_threshold"
value=""
min="0"
step="1000"
style="width:240px"
/>
مثال: برای ۲ میلیون تومان عدد 2000000 را وارد کنید. |
|
| نمایش نوار |
سایت انجام شده:Parsparts.com
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
به علت پی اچ پی 8.4 بود که با قالب تداخل داشت پس به نسخه پایینتر کاهشش دادیم و رفع شد
سایت انجام شده:Parsparts.com
وضعیت:حل شده
تحلیل مشکل:
فونت های وودمارتی برای لود شدن از چند بخش خیلی دیر لود میشدند.پس با کد سی اس اس سفارشی در تنظیمات خود وودمارت این مشکلو رفع کردیم:
راه حل ها:
کدنویسی:
/* ================================================== PEYDA V4 - FONT FACE ================================================== */ @font-face { font-family: 'Peyda V4'; src: url('/wp-content/themes/woodmart/fonts/PeydaWeb-Regular.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: 'Peyda V4'; src: url('/wp-content/themes/woodmart/fonts/PeydaFaNumWeb-SemiBold.woff2') format('woff2'); font-weight: 600; font-style: normal; font-display: swap; } @font-face { font-family: 'Peyda V4'; src: url('/wp-content/themes/woodmart/fonts/PeydaFaNumWeb-Bold.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Peyda V4'; src: url('/wp-content/themes/woodmart/fonts/PeydaNoEnWeb-ExtraBold.woff2') format('woff2'); font-weight: 800; font-style: normal; font-display: swap; } @font-face { font-family: 'Peyda V4'; src: url('/wp-content/themes/woodmart/fonts/PeydaWeb-Black.woff2') format('woff2'); font-weight: 900; font-style: normal; font-display: swap; } /* ================================================== GLOBAL SITE FONT ================================================== */ html, body { font-family: 'Peyda V4', sans-serif !important; } body :where( p, span, a, li, label, strong, b, em, small, h1, h2, h3, h4, h5, h6, button, input, textarea, select, option, .button, .wd-button, .wd-btn, .wd-entities-title, .wd-product-title ) { font-family: 'Peyda V4', sans-serif !important; } /* ================================================== ELEMENTOR ================================================== */ .elementor, .elementor * { font-family: 'Peyda V4', sans-serif !important; } /* ================================================== WOODMART TEXT ================================================== */ .wd-page-content, .wd-content, .wd-shop-content, .wd-products, .wd-product, .wd-product-grid, .wd-product-content, .wd-product-detail, .wd-single-product, .wd-cart, .wd-checkout, .wd-my-account { font-family: 'Peyda V4', sans-serif !important; } /* ================================================== DO NOT CHANGE ICON FONTS ================================================== */ /* Woodmart icons */ [class^="wd-icon"], [class*=" wd-icon"], [class^="woodmart-icon"], [class*=" woodmart-icon"] { font-family: "woodmart-font" !important; }
سایت انجام شده:khoshkbarmehrad.com
وضعیت:حل شده
تحلیل مشکل:
وقتی دیجیتس فعال میشد و میخواستیم به پنل میدریت پیشخوان ورود کنیم به جای کادر ورود ،کادر ثبت نام دیجیتس ظاهر میشد.
راه حل ها:
روی سایت خشکبار مهراد (khoshkbarmehrad.com) هم متوجه مشکل شدم. افزونه Deactivate Plugins per Page چون فعال بود و توی اون قبلا تعریف کردیم که دیجیتس رو توی صفحات فعال نکن باعث شده بود دیجیتس درست کار نکنه. یا باید رول رو خاموش میکردیم با افزونشو غیرفعال.
سایت انجام شده:Parsparts.com
وضعیت:حل شده
تحلیل مشکل:
- سایت بخش دیدگاه هاش اسپم شده بود. برای محصولات ووکامرس و نوشته ها حدودا 31 هزار کامنت ثبت شد. پشت هم داشت کامنت ثبت میشد منابع سرور رو درگیر خود کرده بود.
حتما باید برای سایتهای وردپرسی من بعد aksimet وردپرس و گوگل کپچا برای تشخیص ربات نصب کنیم تا اینجوری اسپم نشه سایت.
- از بخش تنظیمات و دیدگاه این سه تا رو هم تیکش رو موقت برداشتم کسی کامنت نزاره
- افزونه woodmart plus جدی ترین مشکل رو بوجود اورد برا پیغام 503، غیرفعال کردم مشکل کلا حل شد فعلا.
حتما باید برای سایتهای وردپرسی من بعد aksimet وردپرس و گوگل کپچا برای تشخیص ربات نصب کنیم تا اینجوری اسپم نشه سایت.
راه حل ها:
سایت انجام شده:benz-bmw-center
وضعیت:حل شده
تحلیل مشکل:
برو:
پیشخوان → تنظیمات → عمومی
این دو مورد باید دقیقاً این باشند:
نشانی وردپرس (WordPress Address):
https://benz-bmw-center.com
نشانی سایت (Site Address):
https://benz-bmw-center.com
برو داخل پیشخوان:
Elementor → Editor → Settings → Performance
دنبال گزینهای به اسم:
CSS Print Method
بگرد.
اگر روی:
External File
هست، تغییرش بده به:
Internal Embedding
طبق مستندات خود Elementor، این گزینه باعث میشود CSS بهجای اینکه بهصورت فایل جداگانه در /uploads/elementor/css/ ذخیره و لود شود، داخل HTML صفحه قرار بگیرد. خود Elementor هم این تغییر را برای عیبیابی مشکلات فایلهای CSS پیشنهاد میکند.
بعد:
- Save Changes
- برو Elementor → Tools
- Clear Files & Data را بزن.
- کش سایت/وودمارت/LiteSpeed را پاک کن.
- سایت را با
Ctrl + F5باز کن.
دقت کن هر دو HTTPS باشند.
راه حل ها:
سایت انجام شده:khoshkbarmehrad.com
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کد زیر را در کد اسنیپ بزارید:
کدنویسی:
/** * ========================================================= * Block Elementor for Shop Manager * ========================================================= */ function mz_is_shop_manager() { $user = wp_get_current_user(); return in_array( 'shop_manager', (array) $user->roles, true ); } /** * حذف Elementor از نوار بالای سایت */ add_action( 'admin_bar_menu', function( $wp_admin_bar ) { if ( ! mz_is_shop_manager() ) { return; } $wp_admin_bar->remove_node( 'elementor_edit_page' ); $wp_admin_bar->remove_node( 'edit-with-elementor' ); }, 999 ); /** * حذف Elementor از منوی مدیریت */ add_action( 'admin_menu', function() { if ( ! mz_is_shop_manager() ) { return; } remove_menu_page( 'elementor' ); remove_menu_page( 'elementor-app' ); }, 999 ); /** * مخفی کردن دکمههای Elementor */ add_action( 'admin_head', function() { if ( ! mz_is_shop_manager() ) { return; } echo ''; }); /** * جلوگیری از ورود مستقیم به Elementor */ add_action( 'admin_init', function() { if ( ! mz_is_shop_manager() ) { return; } // Elementor Editor if ( isset( $_GET['action'] ) && $_GET['action'] === 'elementor' ) { wp_safe_redirect( admin_url() ); exit; } // Elementor Preview if ( isset( $_GET['elementor-preview'] ) ) { wp_safe_redirect( admin_url() ); exit; } }, 1 );
سایت انجام شده:khoshkbarmehrad.com
وضعیت:حل شده
تحلیل مشکل:
مشکل کند بودن پیشخوان وردپرس خشکبار مهراد بخاطر افزونه ووکامرس فارسی بود. از ورژن 7 به 10 آپدیت شد مشکل حل شد
راه حل ها:
سایت انجام شده:rahmataval.ir
وضعیت:حل شده
تحلیل مشکل:
راه حل ها:
کدنویسی:
.elementor-174134 .elementor-element.elementor-element-518acce .elementor-heading-title, .elementor-174134 .elementor-element.elementor-element-518acce .elementor-heading-title > a { display: -webkit-box !important; -webkit-box-orient: vertical !important; -webkit-line-clamp: 2 !important; overflow: hidden !important; }
سایت انجام شده:arabana.com
وضعیت:حل شده
تحلیل مشکل:
این خطا هنگام ویرایش با المنتور صفحه اصلی وجود داشت:
یک خطای مهم در این وب سایت وجود دارد. لطفاً برای دستورالعملها، ایمیل مدیر سایت را بررسی نمایید. اگر همچنان مشکل دارید، لطفاً انجمن پشتیبانی را امتحان کنید.
دربارهٔ عیبیابی در وردپرس بیشتر بدانید.
راه حل ها:
یکسری اکستنشن های هاست فعتال شد تا مشکل رفع شد, اکستنشن های dom, xml ,xmlreader ,xmlwriter
سایت انجام شده:gilzar.com
وضعیت:حل شده
تحلیل مشکل:
مراحل جابهجایی باکس کد تخفیف ووکامرس در المنتور:
3) در المنتور، به کانتینری که میخواستم فرم داخلش نمایش داده شود، این کلاس را دادم:
my-custom-coupon-container
4) این کد را در functions.php یا Code Snippets گذاشتم تا فرم اصلی کوپن به آن بخش منتقل شود:
add_action('wp_footer', function() {
if ( is_checkout() ) {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$(document.body).on('updated_checkout', function(){
moveCouponForm();
});
function moveCouponForm() {
var $form = $('.checkout_coupon');
var $target = $('.my-custom-coupon-container');
if ($form.length && $target.length && !$target.has($form).length) {
$form.appendTo($target);
$form.show();
$('.woocommerce-form-coupon-toggle').hide();
}
}
moveCouponForm();
});
</script>
<?php
}
});
5) برای استایل بهتر، این CSS هم اضافه شد:
.my-custom-coupon-container {
padding: 20px;
background: #f9f9f9;
border-radius: 8px;
margin-bottom: 20px;
}
.my-custom-coupon-container .checkout_coupon {
display: flex !important;
gap: 10px;
max-width: 100% !important;
}
نتیجه:
فرم کد تخفیف فقط جابهجا شد، ساختار اصلی حفظ شد، و دکمه اعمال کد بدون رفرش و درست کار میکند.
راه حل ها:
کدی که در باکس وارد کردم رو در کد اسنیپ گذاشتم
کدنویسی:
add_action('wp_footer', function() { if ( is_checkout() ) { ?> jQuery(document).ready(function($) { $(document.body).on('updated_checkout', function(){ moveCouponForm(); }); function moveCouponForm() { var $form = $('.checkout_coupon'); var $target = $('.my-custom-coupon-container'); if ($form.length && $target.length && !$target.has($form).length) { $form.appendTo($target); $form.show(); $('.woocommerce-form-coupon-toggle').hide(); } } moveCouponForm(); }); <?php } }); -------------------------------------------- برای استایل بهتر، این CSS هم اضافه شد: .my-custom-coupon-container { padding: 20px; background: #f9f9f9; border-radius: 8px; margin-bottom: 20px; } .my-custom-coupon-container .checkout_coupon { display: flex !important; gap: 10px; max-width: 100% !important; }
سایت انجام شده:gilzar.com
وضعیت:حل شده
تحلیل مشکل:
بعد از نصب افزونه کش wp rocket تمامی فایل های css/jsصفحه اصلی پرید و کروسل ها فقط لینک داشتند ولی محتوایی نشون نمیدادند
راه حل ها:
راه حل:بعد از تست یکسری موارد برگه ی جدیدی ساخته شد و تمامی بخش های طراحی المنتور درگ و دراپ شد و در اخر برگه ی جدید رو به عنوان صفحه اصلی سایت فراخونی کردیم/همچنین در تنظیمات افزونه wp rocket تنظیمات مربوطه رو تیکشو برداشتم(عکس), بعد از تست یکسری موارد برگه ی جدیدی ساخته شد و تمامی بخش های طراحی المنتور درگ و دراپ شد و در اخر برگه ی جدید رو به عنوان صفحه اصلی سایت فراخونی کردیم
سایت انجام شده:gilzar.com
وضعیت:حل شده
تحلیل مشکل:
در تنظیمات مربوط به ارسال پیامک اول خطای int(-110) میومد و من پسوورد رو به apiتغییر دادم اما الان خطای int 5میاد برای معتبر نبودن شماره فرستنده














