Activar Polylang en entradas personalizadas o Custom Post Types
Si tienes instalado el plugin de idiomas Polylang en tu WordPress y trabajas con entradas personalizadas o Custom Post Types, es probable que dentro de la edición de Polylang no puedas habilitarlo para trabajar con tus nuevos tipos personalizados, no te preocupes, con una sencilla función lograrás que todos tus CPT (Tipos personalizados) se puedan editar a los distintos idiomas de la web y que Polylang los reconozca.
Pasos para habilitar Polylang en Custom Post Types
1.- Abre tu archivo functions.php y inserta el siguiente código.
add_filter('pll_get_post_types', 'mi_pll_con_custom_post_types'); function mi_pll_con_custom_post_types($types) { return array_merge($types, array('mientradapersonalizada1' => 'mientradapersonalizada1','mientradapersonalizada2' => 'mientradapersonalizada2')); }
Donde pone mientradapersonalizada1 debes poner el nombre que has asignado a tu CPType.
Puedes escribir dentro del array tantos nombres de entradas personalizadas como hayas creado en tu web.
2.- Guarda los cambios y si es necesario sube el archivo mediante FTP de nuevo al servidor. Cuando entres de nuevo al backoffice de tu wordpress podrás ver que en la edición de entradas ya tienes habilitados los botones para poder traducir la entrada a los idiomas de la página.
Recuerda que el archivo functions.php se encuentra ubicado dentro del tema de tu wordpress, la ruta es la siguiente:
wp_content/themes/tutema/functions.php
Si realizas los cambios directamente en el archivo de tu tema, cuando decidas actualizar el tema perderás los cambios, es mejor trabajar siempre con temas hijos.
Puedes encontrar información para crear temas hijos en la siguientes entradas de este blog:
Los siguientes artículos del blog te pueden ayudar a crear nuevas páginas o templates para tu tema hijo:
Cómo crear diferentes páginas/templates en WordPress
Jerarquía de Plantillas WordPress
Cómo crear entradas personalizadas en WordPress
En las Settings de Polylang hay una opcion: «Custom post types and Taxonomies», donde se puede seleccionar qué tipos de Post pueden ser Traducibles… sin código.
y si lo que quiero es quitar los ctp y solo dejar paginas y post?
Bravooo! Me acabas de salvar! Gracias!!!
Muchas gracias Jordi
Hola Nerea, acabo de leer tu post y hay algo que no acabo de entender.
A ver, cuando dices «Donde pone mientradapersonalizada1 debes poner el nombre que has asignado a tu CPType.» Vale, reemplazo lo de «mientradapersonalizada1» por el nombre de mi entrada. Pero claro, si estoy haciendo una web con 2 idiomas, ¿como lo hago para que cuando el visitante lea la web en inglés, le salga el post en inglés y cuando la lea en castellano pueda leer el post en ese idioma?
¿Tendría que poner algo como… ?
return array_merge($types, array(‘post_1_en_inglés’ => ‘post_1_en_castellano’,’post_2_en_inglés’ => ‘post_2_en_castellano’));
Buenos días Alejandro, estás confundiendo los CPT con su contenido, el CPT es simplemente un tipo de publicación con unas características concretas, se crean una vez y contienen toda la información de ese tipo de entradas. Suponemos que has creado los siguientes CPT: miembro_asociado y miembro_principal, entonces en la función tienes que poner miembro_asociado => miembro_asociado, miembro_principal => miembro_principal. Es suficiente porque lo que estás haciendo es ordenar a Polylang que tenga en cuenta que ese tipo de entradas las quieres traducir a todos los lenguajes habilitados en la web.
Espero que esto te sirva de ayuda, en cualquier caso si me necesitas por aquí estoy.
Que tengas un feliz día
Hola Nerea,
Fantástico el código! 🙂 Solo comentarte que hay un pequeño error de sintaxis falta una ‘ después de la segunda mientradapersonalizada1.
Un saludo
Muchas gracias Daniel, ya está solucionado. Aprovecho para felicitarte la Navidad