سلام. امروز برای یکی از پروژههام مشکلی پیش اومد. اسلایدر صفحه نخست قالب با ووکامرس تداخل داشت و باعث میشد اسلایدر از کار بیفته. اولین راهی که به ذهنم رسید حذف فایلهای JS از Home page بود.
به دو دلیل:
۱: معمولا همیشه سادهترین راه رو انتخاب میکنم (مگر اینکه بدونم مشکل دیگهای بوجود میاد)
۲: با یک تیر دو نشون میزنم. یعنی علاوه بر حل مشکل تداخل، اینکار باعث سبکتر شدن صفحه اول خواهد شد.
سرچ کردم. کدهای زیادی رو تست کردم که ظاهرا به دلیل انتشار نسخههای جدید ووکامرس، فایلها به صورت کامل حذف نشدن. در نهایت به این کد رسیدم:
remove_action('wp_enqueue_scripts', [WC_Frontend_Scripts::class, 'load_scripts']); remove_action('wp_print_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5); remove_action('wp_print_footer_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5);
این کد رو کافیه داخل functions.php قالب وردپرس اضافه کنید. البته کد فوق باعث میشه فایلهای JS و CSS مربوط به Woocommerce در تمامی صفحات و برگهها غیر فعال بشه که خب این خودش باعث بهم ریختگی صفحاتی مثل "پرداخت" و "سبد خرید" میشه. بنابراین باید کد رو به صورت زیر قرار داد تا فقط برای صفحه اصلی سایت اعمال بشه:
function disable_wc_home() { if(is_home()) { remove_action('wp_enqueue_scripts', [WC_Frontend_Scripts::class, 'load_scripts']); remove_action('wp_print_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5); remove_action('wp_print_footer_scripts', [WC_Frontend_Scripts::class, 'localize_printed_scripts'], 5); } } add_action('wp', 'disable_wc_home');
یک فانکشن با نام disable_wc_home ساختم که داخلش بررسی میشه اگر صفحه در حال لود صفحه نخست بود (شرط if is_home) اونوقت کدها رو اجرا کن.
موفق و پیروز باشید.