دسته بندی مشکلات و راه حلش
دسته بندی مشکلات و راه حلش
حل مشکل ناقص لود شدن سی اس اس صفحه سایت

سایت انجام شده:gilzar.com

وضعیت:حل شده

سی اس اس سایت ناقص لود میشد و خطای کنسول این بود(تصویر):

فایل‌های post-XXXX.css معمولاً به CSS تولیدشده توسط Elementor مربوط هستند

مرحله ۱ — بازسازی فایل‌های CSS المنتور

وارد پیشخوان وردپرس شوید:

Elementor ← Tools ← General

سپس گزینه‌ای با عنوان Regenerate CSS & Data رو زدیم
در مرحله بعد از قسمت /wp-content/uploads/elementor/css/ چک کزدیم دیدیم محتوای پوشه خالیه پس مزحله سوم رو اجرا کردیم:
مرحله 3:Elementor ← Settings ← Performance
در بعضی نسخه‌ها این گزینه زیر بخش Advanced قرار دارد.
گزینه 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);

سایدکارت WoodMart از سه محصول فقط دو محصول را نمایش می‌داد، اما مبلغ هر سه محصول محاسبه می‌شد.

سایت انجام شده:arabanaco.com

وضعیت:حل شده

  • شناسایی مشکل: سایدکارت 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; }

افزودن ایکن svg به منو فهرست وودمارت

سایت انجام شده: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 = ''; // Insert after opening anchor tag. if (preg_match('/]*>/i', $item_output)) { $item_output = preg_replace( '/(]*>)/i', '$1' . $image, $item_output, 1 ); } return $item_output; }, 10, 4);

مرتب سازی بر اساس محصولات موجود (برای ویجت شبکه حلقه با کلاس stock-first-loop)

سایت انجام شده: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

سایت انجام شده: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 خاموش شد
  • در پیکر بندی ووکامرس بخش پیشرفته و امکانات گزینه حالت سازگاری را فعال کنید را بزن و وقتی دکمه اوکی رو دیدی باید بالاتر از این گزینه،گزینه ی ذخیره سازی سفارش با کارایی بالا (توصیه می شود) را روشن کنی

جلوگیری از ریدایرکت به مسیر demo

سایت انجام شده: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);

خلاصه رفع مشکل ریدایرکت WordPress به /demo بعد از انتقال سایت

سایت انجام شده: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 بوجود آمد که با این روش مرتفع شد.

افزودن svg به منو وردپرس در قالب هلو المنتور

سایت انجام شده: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 = ' ' . $title; } return $title; }, 10, 2 );

افزودن فونت به قالب هلوالمنتور

سایت انجام شده: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 استفاده کردیم تا همین الان هم قابلیت استفاده در چندین جا را داشته باشد، اما اگر با هم تداخل پیدا کردند، کافیست کلاس‌های متفاوتی برای هر جفت متن و دکمه انتخاب کنید). این کد بسیار سبک است و هیچ فشاری به دیتابیس یا سرعت سایت شما وارد نمی‌کند. موفق باشید!

تبدیل تصاویر به فرمت WebP در رسانه‌ها

سایت انجام شده: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:

  1. ویجت Dynamic Field جت‌انجین را قرار دهید.
  2. Source: را روی Post/Page Data بگذارید.
  3. Post Data: را روی Post ID (شناسه نوشته) بگذارید (در این حالت ابتدا یک عدد مثل 124 نمایش داده می‌شود).
  4. تیک گزینه Filter field output (فیلتر کردن خروجی فیلد) را در پایین همان پنل فعال کنید.
  5. در کادر 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:%;" >

<?php return ob_get_clean(); } /* |-------------------------------------------------------------------------- | به‌روزرسانی نوار با fragments ووکامرس |-------------------------------------------------------------------------- */ add_filter( 'woocommerce_add_to_cart_fragments', function ( $fragments ) { $fragments['.awc-shipping-progress-global'] = '
' . awc_render_shipping_bar() . '
'; return $fragments; } ); /* |-------------------------------------------------------------------------- | چاپ نوار، CSS و JavaScript |-------------------------------------------------------------------------- */ add_action( 'wp_footer', function () { if ( is_admin() || ! function_exists( 'WC' ) || ! WC()->cart ) { return; } if ( 'yes' !== get_option( 'awc_show_bar', 'yes' ) ) { return; } ?>
(function($) { 'use strict'; var awcRefreshTimer = null; /* * سلکتورهای رایج Cart Drawer وودمارت */ function awcFindWoodmartDrawer() { return document.querySelector( '.whb-cart-dropdown, ' + '.wd-dropdown-cart, ' + '.cart-widget-side, ' + '.wd-side-hidden-cart, ' + '.woodmart-cart-widget' ); } /* * قراردادن نوار داخل Cart Drawer */ function awcInsertBarIntoDrawer() { var source = document.querySelector( '.awc-shipping-progress-global .awc-shipping-progress' ); if ( ! source ) { return; } var drawer = awcFindWoodmartDrawer(); if ( ! drawer ) { return; } var existingWrapper = drawer.querySelector( '.awc-shipping-progress-drawer' ); var sourceHtml = source.outerHTML; if ( existingWrapper ) { var oldHtml = existingWrapper.innerHTML; if ( oldHtml !== sourceHtml ) { existingWrapper.innerHTML = sourceHtml; } return; } var wrapper = document.createElement('div'); wrapper.className = 'awc-shipping-progress-drawer'; wrapper.innerHTML = sourceHtml; var cartContent = drawer.querySelector( '.woocommerce-mini-cart, ' + '.wd-cart-widget, ' + '.cart_list, ' + '.shopping-cart-widget-body' ); if ( cartContent && cartContent.parentNode ) { cartContent.parentNode.insertBefore( wrapper, cartContent ); } else { drawer.insertBefore( wrapper, drawer.firstChild ); } } /* * اجرای کنترل‌شده، بدون MutationObserver */ function awcScheduleRefresh() { clearTimeout( awcRefreshTimer ); awcRefreshTimer = setTimeout(function() { awcInsertBarIntoDrawer(); }, 250); } /* * رویدادهای استاندارد ووکامرس */ $(document.body).on( 'added_to_cart ' + 'removed_from_cart ' + 'updated_wc_div ' + 'updated_cart_totals ' + 'wc_fragments_refreshed', function() { awcScheduleRefresh(); } ); /* * رویدادهای رایج وودمارت */ $(document.body).on( 'woodmart_cart_updated ' + 'woodmart_update_cart ' + 'cart_updated', function() { awcScheduleRefresh(); } ); /* * وقتی کاربر روی آیکون سبد کلیک می‌کند، * چند بار محدود بررسی می‌کنیم تا Drawer فرصت باز شدن داشته باشد. */ $(document).on( 'click', '.woodmart-cart, .wd-header-cart, .shopping-cart, .cart-widget-opener, .wd-header-cart a', function() { awcScheduleRefresh(); setTimeout( awcInsertBarIntoDrawer, 600 ); setTimeout( awcInsertBarIntoDrawer, 1200 ); } ); /* * اجرای اولیه صفحه */ $(function() { awcScheduleRefresh(); setTimeout( awcInsertBarIntoDrawer, 1000 ); }); })(jQuery); <?php } );
سفید شدن صفحه پیشخوان

سایت انجام شده: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 چون فعال بود و توی اون قبلا تعریف کردیم که دیجیتس رو توی صفحات فعال نکن باعث شده بود دیجیتس درست کار نکنه. یا باید رول رو خاموش میکردیم با افزونشو غیرفعال.

مشکل خطا 503

سایت انجام شده:Parsparts.com

وضعیت:حل شده

  • سایت بخش دیدگاه هاش اسپم شده بود. برای محصولات ووکامرس و نوشته ها حدودا 31 هزار کامنت ثبت شد. پشت هم داشت کامنت ثبت میشد منابع سرور رو درگیر خود کرده بود.
    حتما باید برای سایتهای وردپرسی من بعد aksimet وردپرس و گوگل کپچا برای تشخیص ربات نصب کنیم تا اینجوری اسپم نشه سایت.
  • از بخش تنظیمات و دیدگاه این سه تا رو هم تیکش رو موقت برداشتم کسی کامنت نزاره
  • افزونه woodmart plus  جدی ترین مشکل رو بوجود اورد برا پیغام 503، غیرفعال کردم مشکل کلا حل شد فعلا.

 

پریدن سی اس اس

سایت انجام شده: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 پیشنهاد می‌کند.

بعد:

  1. Save Changes
  2. برو Elementor → Tools
  3. Clear Files & Data را بزن.
  4. کش سایت/وودمارت/LiteSpeed را پاک کن.
  5. سایت را با 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 );

وصل کردن جت اسمارت فیلتر به لیستینگ شبکه جت انجین

سایت انجام شده:sun-cosmetic

وضعیت:حل شده

کندی سایت به دلیل به روز نبودن افزونه ووکامرسی فارسی

سایت انجام شده:khoshkbarmehrad.com

وضعیت:حل شده

مشکل کند بودن پیشخوان وردپرس خشکبار مهراد بخاطر افزونه ووکامرس فارسی بود. از ورژن 7 به 10 آپدیت شد مشکل حل شد

2خطی شدن تیتر عنوان در کارت محصول ساخته شده با جت انجین

سایت انجام شده: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

ساخت ربات بله و اتصال به افزونه

سایت انجام شده:Parsparts.com

وضعیت:حل شده

جابجایی باکس تخفیف صفحه تسویه حساب

سایت انجام شده: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; }

پریدن فایل های css/js کروسل صفحه اصلی

سایت انجام شده:gilzar.com

وضعیت:حل شده

بعد از نصب افزونه کش wp rocket تمامی فایل های css/jsصفحه اصلی پرید و کروسل ها فقط لینک داشتند ولی محتوایی نشون نمیدادند

راه حل:بعد از تست یکسری موارد برگه ی جدیدی ساخته شد و تمامی بخش های طراحی المنتور درگ و دراپ شد و در اخر برگه ی جدید رو به عنوان صفحه اصلی سایت فراخونی کردیم/همچنین در تنظیمات افزونه wp rocket تنظیمات مربوطه رو تیکشو برداشتم(عکس), بعد از تست یکسری موارد برگه ی جدیدی ساخته شد و تمامی بخش های طراحی المنتور درگ و دراپ شد و در اخر برگه ی جدید رو به عنوان صفحه اصلی سایت فراخونی کردیم

افزودن پاپ اپ دیجیتس در هدر وودمارت

سایت انجام شده:gilzar.com

وضعیت:حل شده

فقط کافیه در تنظیمات سربرگ ویجت متن html بیاری و کد کوتاه رو داخلش بزاری

عدم دریافت کد یکبار مصرف دیجیتس

سایت انجام شده:gilzar.com

وضعیت:حل شده

عدم دریافت کد یکبار مصرف دیجیتس خطایی مثل تصویر میاد:

کافیه در قسمت نمونه متن ارسالی به شماره موبایل کاربر عبارت داخل تصویر رو وارد کنی

رفع خطای int5 هنگام ارسال پیامک

سایت انجام شده:gilzar.com

وضعیت:حل شده

در تنظیمات مربوط به ارسال پیامک اول خطای int(-110) میومد و من پسوورد رو به apiتغییر دادم اما الان خطای int 5میاد برای معتبر نبودن شماره فرستنده

به پشتیبانی پیام دادم از طریق پنل ملی پیامک و شماره فرستنده رو تغییر دادن و مشکل رفع شد

در حال لود...