طراحی وبسایت و آموزش سئو و وردپرس | مرجع رفع مشکلات وبسایت
بهینه سازی فرم تماس 7 (refill / js / css)

بهینه سازی فرم تماس 7 (refill / js / css)

حتما برای شما هم این موضوع پیش اومده که بعد از نصب افزونه فرم تماس 7 مقداری سرعت سایتتون کم شده یا زمانی که از ابزار های سنجش سرعت سایت مثل gtmetrix استفاده میکنید ، یک ریکوئست طولانی با عنوان refill از طرف فرم تماس 7 به شدت سرور سایت رو درگیر میکنه و سایت شما دیرتر از قبل کاملا لود میشود

 

مشکلات مربوط به فرم تماس 7 از جولای 2018 با به روزرسانی افزونه شروع  شد !  هدف از به روزرسانی حل مشکلات ذخیره سازی و ویژگی captcha  در فرم تماس بود. با این حال ، همراه با انتشار  آخرین نسخه از این افزونه کاربردی در تاریخ ذکر شده ، کاربران شروع به جستجوی انجمن های تخصصی و وبگاه ها کردند تا راهی برای غیرفعال کردن عملکرد دوباره پر کردن پیدا کنند 

 

از آنجا که صفحات کش شده همیشه محتوای ایستا را نشان می دهند ، فرم تماس با فرم 7 به یک راه حل نیاز دارد. نحوه اجرای آن به این صورت است: هنگام بارگذاری صفحه ، یک اسکریپت تشخیص می دهد که صفحه شک شده است یا خیر . اگر بله ، یک درخواست AJAX به سرور ارسال می شود تا تصویر یا سوال امنیتی جدیدی ایجاد و به کاربران نمایش داده شود . این به روز رسانی ریکچپا توسط عملکرد دوباره پر کردن ( refill) مدیریت می شود

 

 

یکی از راه های افزایش سرعت سایت پس از نصب فرم تماس 7 ، حذف قابلیت کش و Refill در سایت شما میشود . البته این قابلیت فقط برای سایت هایی است که در کنار فرم تماس از Catchpa استفاده نمیکنند

 

cf7 بهینه سازی
cf7 بهینه سازی

 

رفع مشکل Refill در فرم تماس 7 ، سبب افزایش سرعت سایت خواهد شد و در سئو سایت شما نیز تاثیرگذار خواهد بود

 

رفع مشکل Refill توسط کد جاوا اسکریپت

 

برای رفع مشکل refill در فرم تماس 7 از طریق کد جاوا اسکریپت ، میبایست کد زیر را در قسمت هدر یا فوتر سایت وردپرس خود قرار دهید

برای این کار ابتدا پلاگین Insert Header And Footer را نصب کنید تا امکان تزریق سریع و ساده کد ها به این نواحی برای شما فراهم شود  و سپس در قسمت هدر یا فوتر کد زیر را اضافه کنید

 

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

<script>

wpcf7.cached = 0;

</script>

 

رفع مشکل Refill توسط ویرایش افزونه فرم تماس 7

 

در این روش با استفاده از ایجاد تغییرات در فایل های افزونه فرم تماس ، ریکوئست مربوط به refill را از طریق خود افزونه حذف می کنیم

بهتر است از این روش استفاده نکنید زیرا ممکن است در عملکرد فرم تماس مشکلاتی وجود آورد

if ( defined( 'WP_CACHE' ) && WP_CACHE ) {
        $wpcf7['cached'] = 1;
    }

 

رفع مشکل Refill توسط Function.php

 

اما بهترین و ساده ترین راه برای حذف ریکوئست refill ، قراردادن یک قطعه کد در فایل function مربوط به پوسته سایت میباشد . برای اضافه کردن این قطعه کد ، ابتدا وارد هاست سایت خود شوید ، سپس داخل فولدر wp-content شوید . پس از آن وارد پوشه themes و سپس پوشه مربوط به قالب سایت وارد شوید و این کد را در داخلی فایل با نام function.php در انتهای آن اضافه کنید

function aa_disable_wpcf7_refill() {
global $wp_scripts;
$handle = 'contact-form-7';
$object_name = 'wpcf7';
$data = $wp_scripts->get_data( $handle, 'data' );
if ( ! empty( $data ) ) {
if ( ! is_array( $data ) ) {
$data = json_decode( str_replace( 'var ' . $object_name . ' = ', '', substr( $data, 0, - 1 ) ), true );
}
foreach ( $data as $key => $value ) {
$localized_data[ $key ] = $value;
}
unset($localized_data['cached']);
$wp_scripts->add_data( $handle, 'data', '' );
wp_localize_script( $handle, $object_name, $localized_data );
}
}

add_action( 'wpcf7_enqueue_scripts', 'aa_disable_wpcf7_refill' );

 

بهینه سازی فرم تماس 7 با حذف فایل css

زمانی که فرم تماس 7 را در وبسایت خود حذف میکنید ، فایل های css مربوط به استایل این فرم تماس در تمام صفحات وبسایت شما بارگذاری میشوند

با استفاده از روش زیر میتوانید در صفحاتی که فرم تماس در آنها قرار ندارد از لود استایل css  جلوگیری کنید .

 

فرض کنید یک صفحه در وبسایت شما دارای فرم تماس است نام آن contact-us است . در قطعه کد زیر ، نام صفحات مورد بررسی قرار میگیرند و صفحاتی که نام آنها با contact-us یکی نیست ، CSS در آنها لود نخواهد شد

 

add_action( 'wp_print_styles', 'aa_deregister_styles', 100 );
function aa_deregister_styles() {
    if ( ! is_page( 'contact-us' ) ) {
        wp_deregister_style( 'contact-form-7' );
    }
}

 

 

بهینه سازی فرم تماس با حذف کدهای جاوا اسکریپت

 

همانند فایل های css  ، در تمامی صفحات شما فایل های js نیز فراخوانی خواهند شد . با استفاده از کد زیر در قسمت Function میتوانید از لود فایل های js نیز جلوگیری کنید

مانند قسمت بالا ، قطعه کد زیر ابتدا نام صفحه را با صفحه فرم تماس بررسی میکند و در صورت مشابه نبودن از لود فایل js جلوگیری میکند

add_action( 'wp_print_scripts', 'aa_deregister_javascript', 100 );
function aa_deregister_javascript() {
    if ( ! is_page( 'contact-us' ) ) {
        wp_deregister_script( 'contact-form-7' );
    }
}

 

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *