Para desarrolladores
Convenciones: las funciones públicas y los hooks usan el prefijo lingopress_, el namespace es BallesDev\LingoPress y el text domain es ballesdev-lingopress. Sin Composer ni dependencias externas.
API pública (PHP)
Sección titulada «API pública (PHP)»Idiomas
Sección titulada «Idiomas»| Función | Qué hace |
|---|---|
lingopress_languages_list( $args ) |
Lista de idiomas del sitio. |
lingopress_default_language( $field ) |
Idioma por defecto (slug u otro campo). |
lingopress_current_language( $field ) |
Idioma de la request actual (frontend). |
lingopress_add_language( $args ) |
Crea un idioma (las rewrite rules se regeneran automáticamente). |
Contenido
Sección titulada «Contenido»| Función | Qué hace |
|---|---|
lingopress_set_post_language( $post_id, $lang ) |
Asigna idioma a una entrada. |
lingopress_get_post_language( $post_id, $field ) |
Idioma de una entrada. |
lingopress_save_post_translations( $translations ) |
Vincula entradas como traducciones ([ 'es' => 12, 'en' => 34 ]). |
lingopress_get_post_translations( $post_id ) |
Grupo de traducciones de una entrada. |
lingopress_get_post( $post_id, $lang ) |
ID de la traducción de una entrada en un idioma. |
lingopress_set_term_language / lingopress_get_term_language |
Ídem para términos. |
lingopress_save_term_translations / lingopress_get_term_translations / lingopress_get_term |
Ídem para términos. |
Las entradas creadas antes de activar LingoPress no tienen idioma hasta que se vuelven a guardar; lingopress_set_post_language() lo asigna en lote desde un script.
Presentación y cadenas
Sección titulada «Presentación y cadenas»| Función | Qué hace |
|---|---|
lingopress_the_languages( $args ) |
Renderiza el selector de idiomas. Mismas opciones que el código corto (ver Selector de idioma y menús). |
lingopress_register_string( $name, $text ) |
Registra una cadena traducible en String translations. |
lingopress__( $text ) / lingopress_e( $text ) |
Devuelve / imprime la traducción de una cadena registrada en el idioma actual. |
lingopress_translate_string( $text, $lang ) |
Traducción de una cadena a un idioma concreto. |
Registra las cadenas en todas las requests, también en el admin: String translations lista las cadenas registradas mientras carga, y Remove unused strings borra las traducciones guardadas de las cadenas que no se registraron en esa request.
| Hook | Tipo | Cuándo |
|---|---|---|
lingopress_language_defined |
acción | El idioma de la request quedó resuelto (frontend, en setup_theme). |
lingopress_translated_post_types |
filtro | Lista de post types traducibles (entradas y páginas por defecto; attachment si la traducción de medios está activa). |
lingopress_translated_taxonomies |
filtro | Lista de taxonomías traducibles (category y post_tag por defecto). |
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. |
lingopress_hreflang |
filtro | Mapa código hreflang => URL antes de imprimirlo. |
lingopress_canonical_redirect |
filtro | URL canónica antes de redirigir; devuelve false o '' para cancelar la redirección. |
Otros tipos de contenido
Sección titulada «Otros tipos de contenido»Los productos de una tienda, los eventos y otros post types o taxonomías propios no son traducibles de entrada. Agrégalos con los filtros:
add_filter( 'lingopress_translated_post_types', function ( $post_types ) { $post_types[] = 'product'; return $post_types;} );
add_filter( 'lingopress_translated_taxonomies', function ( $taxonomies ) { $taxonomies[] = 'product_cat'; return $taxonomies;} );La IA traduce el título, el contenido y el extracto; los campos personalizados (post meta) no se traducen ni se copian, salvo que los agregues a la sincronización con lingopress_sync_post_meta.
REST API
Sección titulada «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.
wp lingopress import-polylang(desde la 1.1.1): importa los idiomas, el idioma del contenido y los grupos de traducción desde Polylang, esté activo o no. Se puede ejecutar varias veces: lo que ya está en LingoPress se salta y se respeta el idioma por defecto elegido en LingoPress. Termina con un error si el sitio no tiene datos de Polylang.
Claves de API en wp-config.php
Sección titulada «Claves de API en wp-config.php»Las claves definidas como constantes tienen prioridad sobre las guardadas en LingoPress → AI translation, y la pantalla las muestra como “Defined via” la constante:
define( 'LINGOPRESS_ANTHROPIC_API_KEY', '...' );define( 'LINGOPRESS_GEMINI_API_KEY', '...' );define( 'LINGOPRESS_OPENAI_API_KEY', '...' );define( 'LINGOPRESS_GROQ_API_KEY', '...' );Con el proveedor WordPress (Connectors) (WordPress 7.0+), LingoPress usa wp_ai_client_prompt() y no guarda ninguna clave.
Modelo de datos
Sección titulada «Modelo de datos»Cuatro taxonomías propias, sin tablas custom: lingopress_language y lingopress_term_language (idioma de entradas y términos), lingopress_post_translations y lingopress_term_translations (grupos de traducción). El mismo modelo probado por Polylang, con prefijo propio: sobrevive a exports/imports WXR y permite convivir con los datos de Polylang durante una migración.
