مقدمه: چرا باید ویژگیهای پیشفرض وردپرس را غیرفعال کنیم؟
رفقا، میدونم که وردپرس عاشق اضافه کردن قابلیتهای جدیده و این خوبه، اما همیشه هم به نفع پرفورمنس و سئوی سایت ما نیست. خیلی از مواقع، وردپرس اسکریپتها و استایلهایی رو بارگذاری میکنه که ما اصلاً بهشون نیاز نداریم. فکر کنید به یه اتومبیل لوکس با کلی امکانات که نصفشون هیچوقت استفاده نمیشن، ولی وزنش رو زیاد کردن و سرعتش رو کم! وردپرس هم همینطوره.
بهعنوان یه متخصص سئو و وردپرس فولاستک، من توی پروژههام دیدم که چطور غیرفعال کردن هوشمندانه همین جزئیات به ظاهر کوچیک، میتونه سایت رو مثل جت راه بندازه، امتیاز Core Web Vitals رو حسابی ببره بالا و یه ضربه کاری به سئوی سایت بزنه. این دیگه فراتر از نصب افزونههای کش و بهینهسازی تصویره؛ این فوت کوزهگری کاربلدهاست.
«من توی پروژههام دیدم که حتی چند کیلوبایت JS یا CSS اضافه، چطور میتونه Core Web Vitals رو به هم بریزه و گوگل رو عصبانی کنه. این ریزهکاریها موتور پنهان رتبه ۱ شدن تو گوگلن.»
هزینههای پنهان: چرا غیرفعالسازی مهم است؟
هر ویژگی اضافی در وردپرس، یک سربار (overhead) محسوب میشه. این سربار میتونه در قالبهای زیر ظاهر بشه:
- درخواستهای HTTP اضافی: هر اسکریپت یا استایل جدید، به یک درخواست HTTP جداگانه نیاز داره که زمان بارگذاری صفحه رو افزایش میده.
- حجم بیشتر فایلها: فایلهای CSS و JS اضافی، حجم صفحه رو زیاد میکنن و کاربر باید پهنای باند بیشتری مصرف کنه.
- مشکلات امنیتی: برخی ویژگیها مثل XML-RPC میتونن به پورتال حملات امنیتی تبدیل بشن.
- کاهش امتیاز Core Web Vitals: گوگل به سرعت لود و تعاملپذیری اهمیت میده. این قابلیتهای اضافی معمولاً بار روی DOM رو زیاد میکنن و این امتیازات رو پایین میارن.
- بدهی فنی و کدهای نامرتب: کد اضافی یعنی نگهداری سختتر و احتمال تداخل بیشتر.
- تاثیر بر بودجه خزش (Crawl Budget): هرچه صفحه شما سنگینتر و پر از کدهای غیرضروری باشه، رباتهای گوگل برای خزش و ایندکس کردن محتوای اصلی شما زمان بیشتری صرف میکنند که ممکنه بودجه خزش شما را به هدر دهد.
فوت کوزهگری: ویژگیهایی که باید هوشمندانه غیرفعال کنید
بچهها دقت کنید! این ترفندها رو باید با کدهای PHP در فایل functions.php قالب فرزند (Child Theme) یا یک افزونه اختصاصی خودتون (فوت کوزهگری اکشنها و فیلترها) پیادهسازی کنید. هرگز فایلهای اصلی وردپرس رو دستکاری نکنید.
۱. غیرفعال کردن ایموجیها (Emojis)
اگه سایت شما محتوای فانتزی نداره که به ایموجی نیاز داشته باشه، وردپرس بدون دلیل یه سری فایل CSS و JS برای نمایش ایموجیها بارگذاری میکنه. بیاین این بار اضافی رو از بین ببریم:
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
}
return $plugins;
}
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' == $relation_type ) {
/** This filter is documented in wp-includes/formatting.php */
$emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/11/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
۲. غیرفعال کردن قابلیت Embeds (جاسازی محتوا)
وردپرس به صورت پیشفرض به شما اجازه میده تا پستها، ویدیوها و محتوای دیگه رو به راحتی از سایتهای مختلف جاسازی (embed) کنید. اگه از این قابلیت استفاده نمیکنید، میتونید آن را غیرفعال کنید تا اسکریپتهای مربوطه بارگذاری نشن:
function disable_embeds_code_init() {
// Remove the REST API endpoint.
remove_action( 'rest_api_init', 'wp_oembed_register_route' );
// Turn off oEmbed auto discovery.
add_filter( 'embed_oembed_discover', '__return_false' );
// Don't filter oEmbed results.
remove_filter( 'oembed_datapress_filter', 'wp_oembed_datapress_filter' );
// Remove oEmbed discovery links.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links' );
// Remove oEmbed JavaScript from the front-end and back-end.
remove_action( 'wp_head', 'wp_oembed_add_host_js' );
add_filter( 'tiny_mce_plugins', 'disable_embeds_tiny_mce_plugin' );
// Remove all scripts and styles related to embeds.
add_action( 'wp_enqueue_scripts', 'disable_embed_scripts' );
add_filter( 'rewrite_rules_array', 'disable_embeds_rewrites' );
}
add_action( 'init', 'disable_embeds_code_init', 9999 );
function disable_embeds_tiny_mce_plugin( $plugins ) {
return array_diff( $plugins, array( 'wpembed' ) );
}
function disable_embed_scripts() {
wp_deregister_script( 'wp-embed' );
}
function disable_embeds_rewrites( $rules ) {
foreach ( $rules as $rule => $rewrite ) {
if ( false !== strpos( $rewrite, 'embed=true' ) ) {
unset( $rules[$rule] );
}
}
return $rules;
}
۳. غیرفعال کردن XML-RPC
XML-RPC یک پروتکل ارتباطی هست که اجازه میده اپلیکیشنهای خارجی (مثل اپ موبایل وردپرس یا سرویسهای پینگ) با سایت شما ارتباط برقرار کنن. اگه از این قابلیت استفاده نمیکنید، غیرفعال کردنش ضروریه چون یه حفره امنیتی بزرگه:
add_filter('xmlrpc_enabled', '__return_false');
یا میتونید از طریق فایل .htaccess هم این کار رو انجام بدید (این روش از PHP هم قویتره):
# Block WordPress XML-RPC requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
۴. غیرفعال کردن فیدهای RSS (اگر نیازی ندارید)
اگه سایت شما یه بلاگ سنتی نیست و مثلاً صرفاً یک سایت شرکتیه، ممکنه نیازی به فیدهای RSS نداشته باشید. غیرفعال کردنش باعث میشه وردپرس لینکهای فید رو در <head> صفحه قرار نده:
function disable_feed() {
wp_die( __('No feed available, please visit our homepage!') );
}
add_action('do_feed', 'disable_feed', 1);
add_action('do_feed_rdf', 'disable_feed', 1);
add_action('do_feed_rss', 'disable_feed', 1);
add_action('do_feed_rss2', 'disable_feed', 1);
add_action('do_feed_atom', 'disable_feed', 1);
remove_action( 'wp_head', 'feed_links_extra', 3 );
remove_action( 'wp_head', 'feed_links', 2 );
۵. حذف CSS مربوط به Dashicons و Gutenberg در فرانتاند (اگر استفاده نمیکنید)
Dashicons مجموعه آیکونهای پیشفرض وردپرس هستن که در پنل مدیریت استفاده میشن. اگه در فرانتاند سایتتون از این آیکونها استفاده نمیکنید، دلیلی نداره که بارگذاری بشن. همینطور، اگه از ویرایشگر گوتنبرگ استفاده میکنید اما قالب شما CSSهای مخصوص خودش رو داره یا در صفحات خاصی از گوتنبرگ استفاده نمیکنید، میتونید CSSهای پیشفرض گوتنبرگ رو هم حذف کنید:
function dequeue_unnecessary_styles() {
// Remove Dashicons CSS from frontend (if not used)
if ( ! is_user_logged_in() ) { // Only for logged-out users
wp_dequeue_style( 'dashicons' );
wp_deregister_style( 'dashicons' );
}
// Remove Gutenberg block styles (if not using blocks on frontend, or using custom styles)
wp_dequeue_style( 'wp-block-library' );
wp_dequeue_style( 'wp-block-library-theme' );
wp_dequeue_style( 'wc-block-style' ); // Remove WooCommerce block CSS (if not needed)
}
add_action( 'wp_enqueue_scripts', 'dequeue_unnecessary_styles', 100 );
۶. حذف رشتههای کوئری (Query Strings) از فایلهای استاتیک
وردپرس به صورت پیشفرض رشتههای کوئری (مثلاً ?ver=5.8) رو به آدرس فایلهای CSS و JS اضافه میکنه. این کار میتونه برای کش مرورگرها مشکلساز باشه و باعث بشه فایلها به درستی کش نشن. با حذف این رشتهها، کشینگ رو بهبود میبخشید و سرعت رو افزایش میدید:
function remove_query_strings_from_static_resources( $src ) {
if( strpos( $src, '?ver=' ) ) {
$src = remove_query_arg( 'ver', $src );
}
return $src;
}
add_filter( 'script_loader_src', 'remove_query_strings_from_static_resources', 15, 1 );
add_filter( 'style_loader_src', 'remove_query_strings_from_static_resources', 15, 1 );
۷. غیرفعال کردن jQuery Migrate
jQuery Migrate یه اسکریپت هست که برای سازگاری با نسخههای قدیمی jQuery اضافه شده. اگه مطمئن هستید که قالب و افزونههای شما از نسخههای جدید jQuery استفاده میکنن و نیاز به سازگاری با کدهای قدیمی ندارید، میتونید این اسکریپت رو حذف کنید تا یه فایل JS اضافی بارگذاری نشه:
function dequeue_jquery_migrate( $scripts ) {
if ( ! is_admin() && ! empty( $scripts->registered['jquery'] ) ) {
$scripts->registered['jquery']->deps = array_diff( $scripts->registered['jquery']->deps, ['jquery-migrate'] );
}
}
add_action( 'wp_default_scripts', 'dequeue_jquery_migrate' );
۸. غیرفعال کردن خودپینگبکها (Self Pingbacks)
خودپینگبکها زمانی اتفاق میافتن که شما از داخل سایت خودتون به یکی از پستهای دیگهتون لینک میدید و وردپرس به شما اطلاع میده که یک پینگبک ایجاد شده. این کار نه تنها بیفایده است، بلکه میتونه باعث پر شدن دیتابیس با اطلاعات اضافی و افزایش بار سرور بشه. این فوت کوزهگری ترفندهای پنهان دیتابیس وردپرس رو تکمیل میکنه:
function disable_self_pingbacks( &$links ) {
foreach ( $links as $l => $link ) {
if ( 0 === strpos( $link, get_option( 'home' ) ) ) {
unset($links[$l]);
}
}
}
add_action( 'pre_ping', 'disable_self_pingbacks' );
چگونه این فوتوفنها را به صورت امن پیادهسازی کنیم؟
بچهها دقت کنید! پیادهسازی این کدها نیاز به دانش فنی داره. بهترین راه برای اعمال این تغییرات:
- استفاده از Child Theme: همیشه یک قالب فرزند ایجاد کنید و کدهای بالا را در فایل
functions.phpآن قرار دهید. این کار باعث میشه با بهروزرسانی قالب اصلی، تغییرات شما از بین نرن. - ایجاد یک افزونه اختصاصی: اگر تغییرات زیادی دارید و میخواهید آنها مستقل از قالب باشند، یک افزونه اختصاصی برای سایت خود بسازید و کدها را در آن قرار دهید.
- همیشه بکاپ بگیرید: قبل از هر تغییری، از کل سایت خود بکاپ کامل بگیرید.
- تست کنید: بعد از اعمال هر تغییر، سایت خود را از لحاظ ظاهر و عملکرد به دقت تست کنید.
«بچهها دقت کنید! هر تغییری تو هسته وردپرس، حتی اگه کوچیک به نظر برسه، نیاز به تست کامل داره. این فوت کوزهگریها رو کورکورانه اعمال نکنید! یک غواصی عمیق در دیباگ وردپرس همیشه قبل از انتشار ضروریه.»
مزیتهای فولاستک سئو و پرفورمنس
با پیادهسازی این ترفندهای فولاستک، نه تنها سایت شما از لحاظ سرعت و امنیت بهبود پیدا میکنه، بلکه یک برتری رقابتی در سئو هم به دست میارید. سرعت بالاتر، تجربه کاربری بهتر، کاهش نرخ پرش، افزایش زمان ماندگاری کاربر و در نهایت، رتبهبندی بهتر در نتایج جستجوی گوگل، همگی از نتایج این بهینهسازیهای عمیق هستن. اینها همه بخشی از استراتژی جامع سئو در وردپرس از روز اول هستن.
نتیجهگیری: تسلط بر وردپرس با فوتوفنهای کدنویسی
رفقا، وردپرس یک ابزار قدرتمنده، اما مثل هر ابزار قدرتمند دیگهای، نیاز به تسلط و کنترل دقیق داره. با این فوتوفنهای کدنویسی، شما کنترل نهایی رو روی سایتتون به دست میارید و میتونید اون رو دقیقاً مطابق با نیازهای خودتون بهینه کنید. از حذف ایموجیهای اضافی گرفته تا غیرفعال کردن XML-RPC، هر کد کوچیکی که اضافه میکنید، یک قدم شما رو به سمت یک سایت پرسرعتتر، امنتر و با رتبه سئوی بهتر نزدیکتر میکنه. پس دست به کار بشید و سایتتون رو به یه شاهکار فولاستک تبدیل کنید! اگه سوالی داشتید، من همیشه آمادهام تا فوت کوزهگریهای بیشتری رو باهاتون به اشتراک بذارم.