LingoPressDocs

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) y translations en las colecciones wp/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=all desactiva el filtro.
  • Endpoints propios: GET /wp-json/lingopress/v1/languages (público); POST y DELETE requieren manage_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.