اگر سایت فروشگاهی بر پایه وردپرس و ووکامرس دارید، میدانید که اسکریپتها و استایلهای ووکامرس در تمامی صفحات به طور خودکار لود میشوند. این موضوع باعث میشود تا سرعت بارگذاری سایت کاهش یابد. بهترین راه برای حل این مشکل، این است که اسکریپتها و استایلهای ووکامرسی فقط در صفحات فروشگاه بارگذاری شده و در صفحات غیر فروشگاهی بارگذاری نشود. در این نوشته قصد داریم حذف کتابخانههای ووکامرس از برگههای غیر فروشگاهی را به شما آموزش دهیم.
آنچه در این مقاله میخوانید
روش اوّل : تابع حذف اسکریپتها و استایلهای ووکامرس
اوّلین روش برای عدم لود اسکریپتها و استایلهای ووکامرس در برگههای غیر فروشگاهی، حذف آنها میباشد. در واقع شما باید کاری کنید که هر برگه از سایت بررسی شود و در صورتی که آن برگه فروشگاهی نیست، اسکریپتهای ووکامرس برای آن لود نشود. برای انجام این کار کافی است کد زیر را در functions.php پوسته فرزند قرار دهید و نتیجه سرعت را مشاهده کنید.
/**
* @snippet Remove Woocommerce Scripts & Styles In No-Shop Pages
* @author Rasool Vahdati
* @testedwith WooCommerce 6
*/
add_action( 'wp_enqueue_scripts', 'tidaweb_remove_woocommerce_scripts_styles_in_other_pages', 999 );
function tidaweb_remove_woocommerce_scripts_styles_in_other_pages()
{
//remove generator meta tag
remove_action( 'wp_head', array( $GLOBALS['woocommerce'], 'generator' ) );
// first check that woo exists to prevent fatal errors
if ( function_exists( 'is_woocommerce' ) )
{
// dequeue scripts and styles
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() )
{
// dequeue styles
wp_dequeue_style( 'woocommerce_frontend_styles' );
wp_dequeue_style( 'woocommerce-general' );
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce_fancybox_styles' );
wp_dequeue_style( 'woocommerce_chosen_styles' );
wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
// dequeue scripts
wp_dequeue_script( 'selectWoo' );
wp_dequeue_script( 'wc-add-payment-method' );
wp_dequeue_script( 'wc-lost-password' );
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-credit-card-form' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'jquery-payment' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'jqueryui' );
wp_dequeue_script( 'js.cookie' );
}
}
}
کد بالا یک هوک به wp_enqueue_scripts اضافه میکند. در این کد تمامی اسکریپتها و استایلها به طور کامل در برگههای غیر فروشگاهی حذف میشوند. مدل دیگری از این کد در زیر آورده شده است که در قالب دو هوک wp_print_scripts و wp_print_styles به وردپرس اضافه شده و عملیات حذف را انجام میدهند.
/**
* @snippet Remove Woocommerce Scripts & Styles - Ver 2.0
* @author Rasool Vahdati
* @testedwith WooCommerce 6
*/
add_action( 'wp_print_styles', 'tidaweb_remove_woocommerce_styles_in_other_pages', 999 );
function tidaweb_remove_woocommerce_styles_in_other_pages()
{
// first check that woo exists to prevent fatal errors
if ( function_exists( 'is_woocommerce' ) )
{
// dequeue styles
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() )
{
wp_dequeue_style( 'woocommerce_frontend_styles' );
wp_dequeue_style( 'woocommerce-general' );
wp_dequeue_style( 'woocommerce-layout' );
wp_dequeue_style( 'woocommerce-smallscreen' );
wp_dequeue_style( 'woocommerce_fancybox_styles' );
wp_dequeue_style( 'woocommerce_chosen_styles' );
wp_dequeue_style( 'woocommerce_prettyPhoto_css' );
}
}
}
add_action( 'wp_print_scripts', 'tidaweb_remove_woocommerce_scripts_in_other_pages', 999 );
function tidaweb_remove_woocommerce_scripts_in_other_pages()
{
// first check that woo exists to prevent fatal errors
if ( function_exists( 'is_woocommerce' ) )
{
// dequeue scripts
if ( ! is_woocommerce() && ! is_cart() && ! is_checkout() )
{
wp_dequeue_script( 'selectWoo' );
wp_dequeue_script( 'wc-add-payment-method' );
wp_dequeue_script( 'wc-lost-password' );
wp_dequeue_script( 'wc_price_slider' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-add-to-cart' );
wp_dequeue_script( 'wc-cart-fragments' );
wp_dequeue_script( 'wc-credit-card-form' );
wp_dequeue_script( 'wc-checkout' );
wp_dequeue_script( 'wc-add-to-cart-variation' );
wp_dequeue_script( 'wc-single-product' );
wp_dequeue_script( 'wc-cart' );
wp_dequeue_script( 'wc-chosen' );
wp_dequeue_script( 'woocommerce' );
wp_dequeue_script( 'prettyPhoto' );
wp_dequeue_script( 'prettyPhoto-init' );
wp_dequeue_script( 'jquery-blockui' );
wp_dequeue_script( 'jquery-placeholder' );
wp_dequeue_script( 'jquery-payment' );
wp_dequeue_script( 'fancybox' );
wp_dequeue_script( 'jqueryui' );
wp_dequeue_script( 'js.cookie' );
}
}
}
روش دوّم : نصب افزونه حذف اسکریپتها و استایلهای ووکامرس
افزونه Woocommerce Speed Drain Repair، افزونهای است که با استفاده از آن میتوان عملیات حذف اسکریپتها و استایلهای ووکامرس در برگههای غیر فروشگاهی را انجام داد و سرعت سایت فروشگاهی را افزایش داد. نمونهای از عملکرد این افزونه قبل و بعد از نصب آن در تصویر زیر قابل مشاهده است.
نتیجه
در این نوشته ترفند افزایش سرعت سایتهای فروشگاهی با حذف اسکریپتها و استایلهای ووکامرس در برگههای غیر ووکامرسی توضیح داده شد. همانطور که گفته شد ووکامرس، کتابخانهها و استایلهای مرتبط با خود را به صورت پیشفرض در تمامی برگهها بارگذاری میکند که همین موضوع باعث کاهش سرعت سایت میشود و شما با استفاده از راهکارهای ارائه شده به راحتی میتوانید از بارگذاری آنها در برگههایی غیر از برگههای فروشگاه جلوگیری نمایید. در صورتی که سؤالی دارید، میتوانید آن را از طریق دیدگاهها با ما در میان بگذارید.
این روش واقعاً عالی و کاربردی هستش، وقتی استفاده کنی تازه متوجه میشی سرعت لود سایت به خصوص با ووکامرس چقدر افزایش پیدا میکنه . ممنون از شما بابت انتشار این مقاله 🙂