یکی از مشکلات رایج در سایتهای وردپرسی چندزبانه با افزونه Polylang این است که با وجود فعال بودن ترجمه برای یک Post Type، فقط اولین پست قابل ترجمه است و بقیه پستها:
-
گزینه Language ندارند
-
آیکن ➕ ترجمه نمایش داده نمیشود
-
در Bulk Edit هم زبان قابل انتخاب نیست
این مشکل معمولاً باعث سردرگمی کاربران میشود، چون همه تنظیمات ظاهراً درست هستند.
❌ علت اصلی مشکل چیست؟
برخلاف تصور، این مشکل:
-
از ACF نیست
-
از REST API نیست
-
از تنظیمات Polylang هم نیست
علت اصلی این است که فقط اولین پست واقعاً زبان Polylang دارد.
بقیه پستها معمولاً:
-
قبل از نصب Polylang ساخته شدهاند
-
با Duplicate ساخته شدهاند
-
یا از Import وارد سایت شدهاند
در نتیجه، این پستها در دیتابیس Polylang هیچ زبانی ندارند و قابل ترجمه نیستند.
✅ راهحل قطعی و سریع
برای حل این مشکل باید زبان را بهصورت مستقیم به پستها اختصاص بدهیم.
کد زیر را موقتاً در فایل functions.php قرار دهید:
add_action('init', function () {
if (!function_exists('pll_set_post_language')) {
return;
}
$posts = get_posts([
'post_type' => 'service',
'posts_per_page' => -1,
'post_status' => 'any',
'lang' => ''
]);
foreach ($posts as $post) {
pll_set_post_language($post->ID, 'de'); // زبان اصلی سایت
}
});
🔹 بعد از رفرش صفحه:
-
همه پستها زبان میگیرند
-
گزینه ترجمه برای همه فعال میشود
⚠️ بعد از حل مشکل، حتماً این کد را حذف کنید.
🟢 نتیجه نهایی
بعد از اجرای این روش:
-
تمام پستهای Post Type قابل ترجمه میشوند
-
آیکن ➕ ترجمه کنار همه پستها ظاهر میشود
-
مشکل «فقط اولین پست قابل ترجمه است» بهطور کامل برطرف میشود
🔎 نکته مهم برای جلوگیری از تکرار مشکل
-
همیشه بعد از نصب Polylang پستها را بسازید
-
برای ترجمه از دکمه ➕ خود Polylang استفاده کنید
-
از Duplicate کردن پستها قبل از تعیین زبان خودداری کنید


