با انتشار نسخه ۶.۷ وردپرس، تغییرات مهمی در نحوه بارگذاری فایلهای ترجمه افزونهها و قالبها اعمال شده که هرچند به بهبود عملکرد هسته وردپرس کمک میکنند، اما ممکن است مشکلاتی را برای افزونهها یا قالبهایی که از روشهای قدیمی استفاده میکنند، ایجاد کنند.
در این آموزش، به بررسی این تغییرات و راهحلهای آن میپردازیم.
۱. ترجمه در وردپرس چگونه کار میکند؟
وردپرس برای پشتیبانی از زبانهای مختلف، از مفهوم متندامنه (Text Domain) استفاده میکند. متندامنه در واقع یک شناسه برای تشخیص فایلهای ترجمه مرتبط با افزونه یا قالب است. برای بارگذاری این ترجمهها، از توابعی مثل `load_plugin_textdomain` و `load_theme_textdomain` استفاده میشود.
اما نکتهای که باید به آن توجه کرد، این است که این توابع باید در زمان مناسبی از چرخه اجرای وردپرس فراخوانی شوند. برای این کار، معمولا از هوکهای اکشن مثل `init` استفاده میشود.
۲. تغییرات جدید در وردپرس ۶.۷
در نسخه ۶.۷ وردپرس، توابع مرتبط با بارگذاری ترجمهها بهینهسازی شدهاند. مهمترین تغییرات عبارتاند از:
استفاده از تابع خصوصی جدید: توابع `load_plugin_textdomain` و `load_theme_textdomain` دیگر به طور مستقیم فایلهای ترجمه را بارگذاری نمیکنند. این کار اکنون به یک تابع خصوصی به نام `_load_textdomain_just_in_time` واگذار شده است.
حذف فیلترهای قدیمی: فیلترهای `theme_locale` و `plugin_locale` که قبلاً برای تغییر محلیسازی استفاده میشدند، از هسته وردپرس حذف شدهاند. بنابراین، امکان قلاب کردن کد به این فیلترها وجود ندارد.
این تغییرات باعث بهبود عملکرد وردپرس شده، اما در عین حال میتواند ناسازگاریهایی برای برخی افزونهها یا قالبها ایجاد کند.
۳. مشکل در برخی افزونهها
بعضی افزونه ها فرآیند بارگذاری متندامنه را به هوک `plugins_loaded` متصل می کنند. با توجه به تغییرات نسخه ۶.۷، این روش دیگر به درستی عمل نمیکند. علت این مشکل این است که توابع ترجمه در زمان اجرای `plugins_loaded` هنوز به طور کامل آماده نیستند و فایلهای ترجمه بارگذاری نمیشوند.
۴. راهحل: هوک مناسب برای بارگذاری ترجمهها
برای اطمینان از عملکرد صحیح توابع ترجمه، توصیه میشود که این توابع را به هوک `init` یا یکی از هوکهای بعد از آن قلاب کنید. به عنوان مثال:
add_action(‘init’, function() {
load_plugin_textdomain(‘my-plugin’, false, dirname(plugin_basename(__FILE__)) . ‘/languages/’);
});
این روش تضمین میکند که فرآیند بارگذاری ترجمهها در زمان مناسبی انجام میشود.
۵. بررسی ترتیب اجرای هوکها
اگر نمیدانید کدام هوکها و به چه ترتیبی اجرا میشوند، میتوانید به مستندات وردپرس مراجعه کنید:
این صفحه اطلاعات دقیقی درباره زمانبندی اجرای هوکها ارائه میدهد و به شما کمک میکند بهترین زمان برای قلاب کردن کدهای خود را پیدا کنید.
۶. مشاهده جزئیات فنی تغییرات
برای کسانی که به جزئیات فنی علاقهمند هستند، تغییرات اعمالشده در کدهای هسته وردپرس را میتوانید از این لینک مشاهده کنید:
https://github.com/WordPress/wordpress-develop/commit/d42d95856e9ae3f9e2ed0aad176c066d7f8e3229
—
۷. نتیجهگیری
اگر افزونه یا قالب شما با وردپرس نسخه ۶.۷ یا بالاتر به درستی کار نمیکند، احتمالاً مشکل از روشهای قدیمی بارگذاری فایلهای ترجمه است. با رعایت نکات زیر، میتوانید این مشکل را برطرف کنید:
1. اطمینان حاصل کنید که از هوک `init` یا بعد از آن برای بارگذاری ترجمهها استفاده میکنید.
2. از تغییر فیلترهایی مثل `theme_locale` یا `plugin_locale` خودداری کنید، زیرا دیگر وجود ندارند.
3. برای تست و دیباگ، از ابزارهایی مثل Query Monitor استفاده کنید.
با توجه به اینکه مستندات رسمی وردپرس هنوز این تغییرات را به طور کامل پوشش نداده است، بهتر است کدهای خود را با دقت بازبینی کنید و از منابع معتبر مانند مخزن گیتهاب وردپرس کمک بگیرید. به این ترتیب، میتوانید از ناسازگاریهای احتمالی جلوگیری کنید و افزونه یا قالب خود را برای نسخههای آینده وردپرس آماده نگه دارید.
برای اطلاعات بیشتر درخصوص مشکل زبان و استایل ها در وردپرس 6.7 می توانید این خبر را مطالعه بفرمایید.


سلام
خسته نباشید
ممنون از مقاله تون، ولی نگفتید چیکارکنیم که الان این بهم ریختگی های زبان درست شه..
با درود خواهش می کنم. افزونه ها و قالب ها درحال آپدیت هستند و اکثرا برای رفع این مشکل بروزرسانی منتشر کرده اند. توصیه می کنم افزونه ها و قالب های خود را بصورت فورس به آخرین نسخه های خود بروزرسانی بفرمایید و پیگیر این مهم از جانب توسعه دهنده باشید