در حال حاضر، وردپرس بهترین سایت ساز موجود در جهان است. محبوبیت وردپرس از امکانات و قابلیتهای متعددی که ارائه میدهد نشات گرفته است. با این حال، ممکن است با مشکلاتی نیز در حین کار با این CMS مواجه شوید.
یکی از این مشکلات ارور $ is not a function در وردپرس است. در این مقاله، در مورد رفع ارور $ is not a function در jQuery صحبت میکنیم.
ارور $ is not a function چیست؟
ارور $ is not a function زمانی رخ میدهد که کدی قبل از فراخوانی یک کتابخوانه جی کوئری فراخوانده شود. برای مثال، اگر یک افزونه یا یک قالب وردپرس کدی را قبل از صدا زدن کتابخانه درست فراخوانی کند، این ارور ظاهر میشود.
به صورت پیش فرض، وردپرس $ را به عنوان جی کوئری نمیشناسد و باید برای حل این مشکل یکسری تغییرات ایجاد کنید. اگر چه رفع این ارور میتواند برای کاربرانی که دانش برنامه نویسی ندارند چالش برانگیز باشد.
مثل همیشه، قبل از اعمال هر تغییری در فایلهای هسته وردپرس، توصیه میکنیم حتما یک فایل بکاپ کامل از وبسایت خود تهیه کنید. این کار بسیار مهم است، زیرا حتی اگر یک نقطه ساده را فراموش کنید، عواقب بسیاری در انتظارتان است.
تهیه این فایل بکاپ به این خاطر است تا در صورت بروز مشکل بر اثر تغییرات ایجاد شده بتوانید وبسایت خود را بازگردانی کنید.
استفاده از $ به جای jQuery در وردپرس با استفاده از تابع
یکی از سادهترین روشها برای رفع این ارور استفاده از $ به جای jQuery است. برای این کار باید اسکرپیت زیر را به فایل function.php قالب وبسایتتان اضافه کنید.
wp_enqueue_script("jquery");
اکثر توسعه دهندگان افزونه و قالب وردپرس از این موضوع آگاه هستند. بنابراین ترجیح میدهند از جی کوئری به جای $ استفاده کنند.
برای مثال، جی کوئری به صورت نرمال به این شکل است:
$(“#element”).function();
در وردپرس جی کوئری به این شکل است:
jQuery(“#element”).function();
هرچند تکرار کلمه jQuery بسیار زمانبر است و از طرفی حجم اسکرپیت هم افزایش پیدا میکند. توصیه میشود که در کتابخانه وبسایتتان، $ را به عنوان جایگزینی برای jQuery تعریف کنید. کافی است به سادگی، قطعه کد زیر را در بخش فوتر قالب وبسایت جایگذاری کنید:
(function($) {
// console.log($);
})( jQuery );
اگر میخواهید این تابع را به هدر سایت اضافه کنید، از کد زیر استفاده کنید:
jQuery(document).ready(function( $ ) {
// console.log($);
});
با استفاده از این کد میتوانید یک اسکرپیت خوانا برای وبسایتتان بنویسید.
تعریف یک نام مستعار جدید برای jQuery
کاربران میتوانند تغییرات بسیاری روی جی کوئری اعمال کنند. یکی از این تغییرات امکان عوض کردن $ به هر نام دلخواهی است. برای استفاده از یک نام مستعار جدید برای جی کوئری، از کد زیر استفاده کنید و به ازای j نام دلخواه خودتان را جایگذاری کنید.
var j = jQuery.noConflict();
j( "div p" ).hide();
// Do something with another library's $()
$( "content" ).style.display = "none";
غیرفعال کردن حالت noConflict به طور کامل
برای غیرفعال کردن حالت noConflict در وردپرس دستورات زیر را دنبال کنید:
$ = jQuery.noConflict(true);
این کد باعث میشود حالت noConflict به طور کامل غیرفعال شود.
دستور $.command باعث میشود بتوانید متغییرهای $ را کنترل کنید و آنها را به کتابخانههایی که اولین بار به آن تعلق داشتند برگردانید. این دستور اطمینان حاصل میکند تا جی کوئری هیچ ناسازگاری با $ از کتابخانههای دیگر نداشته باشد.
نتیجهگیری
در این مقاله، در مورد ارور $ is not a function error بحث کردیم. این خطا معمولا زمانی رخ میدهد که کدهایتان قبل از جی کوئری فراخوانده شوند و همچنین به جای جی کوئری از $ استفاده کنید.
به طور پیش فرض، وردپرس از جی کوئری به ازای متد نرمال $ استفاده میکند و این باعث میشود وبسایتتان خطای 404 را نمایش دهد.
میتوانید با استفاده از یک عملگر در فوتر و هدر نام $ را به هر نام دلخواهی تغییر دهید. همچنین، میتوانید حالت noConflict را غیرفعال کنید. حالت noConflict کمک میکند تا متغییرهای $ را کنترل کنید و آنها را به کتابخانههای اصلی که تعلق دارند بازگردانید.