How to Fix Polylang Post Type Translation Issue

How to Fix Polylang Post Type Translation Issue

(Only the First Post Is Translatable)

A common issue when using Polylang in WordPress is that a custom post type appears translatable, but only the first post shows the translation option, while all other posts:

  • Have no language selector

  • Show no “+” icon for translation

  • Cannot be translated via Bulk Edit

Even worse, all Polylang settings may look correct, making this problem confusing for many users.


❌ Why This Happens

This issue is not caused by:

  • ACF settings

  • REST API configuration

  • Polylang post type settings

The real reason is simple:

👉 Only the first post actually has a Polylang language assigned in the database.

The remaining posts were usually:

  • Created before Polylang was installed

  • Duplicated using a clone/duplicate plugin

  • Imported from XML or CSV

As a result, Polylang does not recognize them as multilingual posts.


✅ The Definitive Fix (Works 100%)

You must manually assign a language to all existing posts in that post type.

Add the following code temporarily to your functions.php file:

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, 'en'); // default site language
    }

});

🔹 After refreshing the admin panel:

  • All posts will have a language assigned

  • The translation “+” icon will appear for every post

⚠️ Important:
Remove this code immediately after the issue is fixed.


✅ Final Result

Once the language is assigned:

  • Every post in the custom post type becomes translatable

  • The Polylang language column appears correctly

  • The “only first post is translatable” issue is fully resolved


🔒 How to Prevent This Issue in the Future

  • Always create posts after Polylang is installed

  • Avoid duplicating posts before assigning a language

  • Use Polylang’s built-in “+” translation button

  • Assign a language immediately when creating new posts


Conclusion

If only the first post of a custom post type is translatable in Polylang, the problem is missing language data, not plugin misconfiguration.

Assigning the language programmatically is the fastest and most reliable solution.

Share to other

Leave a Reply

Your email address will not be published. Required fields are marked *

other Articles
If only the first post of a custom post type is translatable in Polylang and others have no language option, this guide shows the exact fix step by step.
Contact us
WhatsApp Telegram Instagram Ticket