با آپدیت وردپرس به ورژن 6.7، تغییراتی در نحوه آپلود فایلهای ترجمه ایجاد میشود که میتواند بر عملکرد افزونهها و پوستهها تأثیر بگذارد.
بر اساس گزارشهای منتشرشده در انجمنهای پشتیبانی وردپرس، برخی کاربران پس از بهروزرسانی به نسخه ۶.۷، با از دست رفتن ترجمهها و استایلهای سفارشی در قالبها و افزونههای خود مواجه شدهاند. این مشکل بهویژه در افزونههایی مانند ووکامرس مشاهده شده است.
توسعهدهندگان ووکامرس در واکنش به این تغییرات، در نسخه ۹.۴ این افزونه، اصلاحاتی برای هماهنگی با وردپرس ۶.۷ اعمال کردهاند. با این حال، ممکن است کاربران همچنان با هشدارهایی مانند «بارگذاری ترجمه برای دامنه <PLUGIN> خیلی زود انجام شده است» مواجه شوند. این هشدارها نشاندهنده نیاز به بارگذاری ترجمهها در زمان مناسب، مانند اکشن ‘init’ یا بعد از آن، هستند.
برای کاهش این مشکلات، توصیه میشود تنظیمات ‘WP_DEBUG_DISPLAY’ را به ‘false’ تغییر دهید تا از نمایش هشدارها جلوگیری شود.
add_filter( ‘doing_it_wrong_trigger_error’, ‘__return_false’ );
همچنین، توسعهدهندگان افزونهها و قالبها باید اطمینان حاصل کنند که بارگذاری فایلهای ترجمه در زمان مناسب انجام میشود تا با تغییرات نسخه ۶.۷ وردپرس سازگار باشد.
در مجموع توصیه میشود پیش از بهروزرسانی به نسخههای جدید وردپرس، افزونهها و قالبهای خود را از نظر سازگاری بررسی کرده و در صورت نیاز، بهروزرسانیهای لازم را اعمال کنند تا از بروز مشکلات احتمالی جلوگیری شود.
ترجمه در وردپرس چگونه کار میکند؟
وردپرس برای پشتیبانی از زبانهای مختلف، از مفهوم متندامنه (Text Domain) استفاده میکند. متندامنه در واقع یک شناسه برای تشخیص فایلهای ترجمه مرتبط با افزونه یا قالب است. برای بارگذاری این ترجمهها، از توابعی مثل `load_plugin_textdomain` و `load_theme_textdomain` استفاده میشود.
اما نکتهای که باید به آن توجه کرد، این است که این توابع باید در زمان مناسبی از چرخه اجرای وردپرس فراخوانی شوند. برای این کار، معمولا از هوکهای اکشن مثل `init` استفاده میشود.
اصلاح کد برای قالب ها :
if ( version_compare( $GLOBALS['wp_version'], '6.7', '<' ) ) {
load_theme_textdomain( 'YOURTEXTDOMAIN', get_template_directory() . '/languages' );
} else {
load_textdomain( 'YOURTEXTDOMAIN', get_template_directory() . '/languages/' . determine_locale() . '.mo' );
}
اصلاح کدها برای افزونه ها :
if ( version_compare( $GLOBALS['wp_version'], '6.7', '<' ) ) {
load_plugin_textdomain( 'YOUR_TEXT_DOMAIN', dirname(plugin_basename(__FILE__)).'/languages' );
} else {
load_textdomain( 'YOUR_TEXT_DOMAIN', plugin_dir_path(__FILE__) . 'languages/your_text_domain-' . determine_locale() . '.mo' );
}
بطور مثال :
وب سایت « منار استور » که یکی از مشتریان خوب شبنم است هم مثل مابقی کاربران وردپرس پس از بهروزرسانی توسط تیم ما به نگارش 6.7 با این مشکل روبرو شده است.
ابتدا به فایل style.css پوسته مراجعه نمائید.
همانطور که خدمت شما عرض شد ، Text domain : <PLACEHOLDER> متندامنه را کپی کرده و فایل functions.php قالب را ویرایش میکنیم.
سپس در کدی که در مطلب بالا برای شما نوشته شده که مختص قالبها است را paste میکنیم و بجای YOURTEXTDOMAIN همان متن دامنه را جای گذاری میکنیم.
و این نتیجه => کار خواهد شد.
ویدئو آموزش :