اگر با بهینه سازی وردپرس سروکار داشته باشی حتما با این مشکل خیلی جدی برخورد کردی. یک افزونه یا قالب کلی css و js اضافی لود میکنه.
شماهم با wp_dequeue_style سعی میکنی که حذفش کنی ولی بازهم در خروجی صفحه ظاهر میشه
چون بعضی افزونهها دوباره استایل را enqueue میکنند یا در اولویت های بالاتر ثبتش میکنند.
توی این مقاله میخوام بهت یاد بدم چطوری به زور این استایل ها و اسکریپت های سمجو حذف کنی.
قبل از اینکه بریم سراغ آموزش، میخوام بهتون بگم اصلا چرا اینکارو میکنیم؟
- افزایش سرعت سایت
- کاهش درخواستهای HTTP
- جلوگیری از لود اسکریپت و استایل های تکراری
- بهینه سازی Core Web Vitals
- کنترل کامل روی فایل های قالب و افزونه ها
خیلی از پلاگین ها و قالب ها فونت، آیکون یا استایل هایی رو لود میکنن که باعث کاهش سرعت لود وبسایت میشه پس
حذفشون = سایت سبکتر + امتیاز بهتر در PageSpeed
روش خیلی حرفه ای
از کد زیر میتونید برای حذف اجباری استایل ها و اسکریپت ها استفاده کنید. یعنی حتی اگر بالاترین اولویت هم داشته باشن بازم حذف میشن.
روش استفاده:
1- این کدو در فایل functions افزونه یا قالبتون اضافه کنید.
2- در متغیر $handles اسم handle هایی که مد نظرتون هست بنویسید.
add_action( 'wp_print_styles', 'xcode_add_attributes', PHP_INT_MAX );
add_action( 'wp_enqueue_scripts', 'xcode_add_attributes', PHP_INT_MAX );
function xcode_add_attributes() {
global $wp_styles;
if ( empty( $wp_styles->registered ) ) {
return;
}
$handles = array(
'rs-roboto',
'tp-material-icons',
'bookyourtravel-base-font-css-style',
'bookyourtravel-heading-font-css-style',
'bookyourtravel-font-icon-style',
'google-Roboto'
);
foreach ( $handles as $target_handle ) {
foreach ( $wp_styles->registered as $handle => $obj ) {
if ( strtolower($handle) === strtolower($target_handle) ) {
// حذف کامل از صف
wp_dequeue_style( $handle );
wp_deregister_style( $handle );
// حذف از لیست استایلهای چاپ شده
if ( isset( $wp_styles->done ) ) {
$index = array_search( $handle, $wp_styles->done );
if ( $index !== false ) {
unset( $wp_styles->done[$index] );
}
}
}
}
}
}
نکات مهم قبل از استفاده:
- حتما مطمئن شو استایل یا اسکریپت جای دیگه ای استفاده نشده باشه.
- بعد از اینکه کد اعمال شد. کش رو خالی کن.
- اول روی محیط آزمایشی انجام بده.
تجربتو توی دیدگاه برام بنویس یا اگر به handle خاصی برخوردی که برات دردسر درست کرد برام بنویس تا بررسیش کنیم.