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.
Opens WPIDE on
Code
$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 add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.