# Assign a Language to Posts Created by Importers and Code

> Gives posts created outside the editor, for example by importers, cron jobs, forms or the REST API, the default Polylang language when they have none, so they do not vanish from language-filtered lists.

- Type: PHP
- Runs: Run everywhere
- Category: [Multilingual](https://wpide.com/library/category/multilingual/)
- Tags: polylang, importers, languages
- Author: WPIDE Team
- Installs: 0
- Updated: 2026-10-28
- Page: https://wpide.com/library/pll-default-language-for-code-posts/

## Code

```php
$wpide_lang = ''; // Language slug to assign; empty = Polylang's default language.

add_action( 'wp_after_insert_post', function ( $post_id, $post ) use ( $wpide_lang ) {
    if ( ! function_exists( 'pll_set_post_language' ) || wp_is_post_revision( $post_id ) || 'auto-draft' === $post->post_status ) {
        return;
    }

    if ( ! pll_is_translated_post_type( $post->post_type ) || pll_get_post_language( $post_id ) ) {
        return;
    }

    pll_set_post_language( $post_id, $wpide_lang ? $wpide_lang : pll_default_language() );
}, 20, 2 );
```

## Notes

Posts that already have a language are not touched. Change $wpide_lang to assign another language instead of the default.

## How to use it

Install the free WPIDE plugin (https://wordpress.org/plugins/wpide/), find "Assign a Language to Posts Created by Importers and Code" in its snippet library and add it in one click; or create a new PHP snippet in WPIDE (or any code snippets plugin) and paste the code above. More snippets: https://wpide.com/library/
