Para desarrolladores
¿No eres programador? Puedes saltarte este documento sin problema. Para usar LingoPress no hace falta tocar código: todo se hace desde el panel de WordPress y está explicado en las demás guías (empieza por Primeros pasos). Esta página es una referencia técnica, pensada para quienes quieran conectar LingoPress con su propio código: sus funciones, sus “hooks” (puntos donde enganchar código propio) y su API.
Convenciones: funciones públicas con prefijo lgp_, hooks con prefijo lingopress_, namespace BallesDev\LingoPress, text domain lingopress. Sin Composer ni dependencias externas.
API pública (PHP)
Idiomas
| Función | Qué hace |
|---|---|
lgp_languages_list( $args ) |
Lista de idiomas del sitio. |
lgp_default_language( $field ) |
Idioma por defecto (slug u otro campo). |
lgp_current_language( $field ) |
Idioma de la request actual (frontend). |
lgp_add_language( $args ) |
Crea un idioma (regenera rewrite rules automáticamente). |
Contenido
| Función | Qué hace |
|---|---|
lgp_set_post_language( $post_id, $lang ) |
Asigna idioma a una entrada. |
lgp_get_post_language( $post_id, $field ) |
Idioma de una entrada. |
lgp_save_post_translations( $translations ) |
Vincula entradas como traducciones ([ 'es' => 12, 'en' => 34 ]). |
lgp_get_post_translations( $post_id ) |
Grupo de traducciones de una entrada. |
lgp_get_post( $post_id, $lang ) |
ID de la traducción de una entrada en un idioma. |
lgp_set_term_language / lgp_get_term_language |
Ídem para términos. |
lgp_save_term_translations / lgp_get_term_translations / lgp_get_term |
Ídem para términos. |
Presentación y cadenas
| Función | Qué hace |
|---|---|
lgp_the_languages( $args ) |
Renderiza el selector de idiomas (ver navegación). |
lgp_register_string( $name, $text ) |
Registra una cadena traducible en String translations. |
lgp__( $text ) / lgp_e( $text ) |
Devuelve / imprime la traducción de una cadena registrada en el idioma actual. |
lgp_translate_string( $text, $lang ) |
Traducción de una cadena a un idioma concreto. |
Hooks
| Hook | Tipo | Cuándo |
|---|---|---|
lingopress_language_defined |
acción | El idioma de la request quedó resuelto (frontend, en setup_theme). |
lingopress_ai_system_prompt |
filtro | Permite modificar el system prompt enviado a la IA. |
lingopress_ai_provider |
filtro | Permite sustituir el proveedor de IA (inyectar uno propio). |
lingopress_switcher_items |
filtro | Modifica los ítems del selector de idiomas. |
lingopress_sync_post_meta |
filtro | Agrega metadatos propios a la sincronización entre traducciones. |
REST API
- Campos
lang(lectura/escritura, con chequeo de capacidades) ytranslationsen las coleccioneswp/v2/*de los post types y taxonomías traducibles. - Filtrado de colecciones por idioma con
?lang=:GET /wp-json/wp/v2/posts?lang=en.lang=alldesactiva el filtro. - Endpoints propios:
GET /wp-json/lingopress/v1/languages(público);POSTyDELETErequierenmanage_options. - El editor de bloques precarga sus colecciones ya filtradas por el idioma de la entrada en edición.
API keys por constantes
En producción, define las keys en wp-config.php — tienen prioridad sobre el valor guardado en ajustes:
define( 'LINGOPRESS_ANTHROPIC_API_KEY', '...' );
define( 'LINGOPRESS_GEMINI_API_KEY', '...' );
define( 'LINGOPRESS_OPENAI_API_KEY', '...' );
define( 'LINGOPRESS_GROQ_API_KEY', '...' );
Modelo de datos
Cuatro taxonomías propias, sin tablas custom: lgp_language y lgp_term_language (idioma de entradas y términos), lgp_post_translations y lgp_term_translations (grupos de traducción). El mismo modelo probado por Polylang, con prefijo propio — sobrevive a exports/imports WXR y permite convivir con Polylang durante una migración.