WordPress: abilitare Polylang alla traduzione di custom post

polylang logo

Un pratica comune per gli utenti di WordPress è quella di acquistare template professionali già pronti. Questi template sono in genere molto ben strutturati e molto spesso sono ricchi di post personalizzati (custom post) per rispondere alle più disparate esigenze. Ad esempio se il template è studiato per alberghi e hotel, troveremo post personalizzati per le camere, i servizi, ecc.
Ora il problema è che se utilizziamo Polylang per la gestione delle traduzioni, i custom post non sono di default abilitati alle traduzioni.
Esiste però un metodo molto semplice per abilitare i post personalizzati utilizzando una funzione pubblica di Polylang:
pll_get_post_types
Vediamo come: inseriamo il seguente codice nel file functions.php che si trova nella directory del tema attivo, verificando prima che Polylang sia installato e attivo con l’istruzione: function_exists('pll_the_languages'

if (function_exists('pll_the_languages')){
	add_filter( 'pll_get_post_types', 'add_cpt_to_pll', 10, 2 );
	 
	function add_cpt_to_pll( $post_types, $is_settings ) {
		
		if ( $is_settings ) {
			// Ammettiamo di voler abilitare i custom post di tipo "cpt_room"
                        // Nascondiamo 'my_cpt' dall'elenco dei tipi di post personalizzati nelle impostazioni Polylang
			unset( $post_types['cpt_room'] );
			
		} else {
			// Abilitiamo le traduzioni per i custom post 'my_cpt'
			$post_types['cpt_room'] = 'cpt_room';
		}
		return $post_types;
	}
}

E il gioco è fatto, compariranno gli strumenti per le traduzioni su tutti i post di tipo “cpt_room”! Ovviamente è possibile aggiungere tutti i custom post che si vuole.

RIferimento: pll_get_post_types