Declarar atributos de shortcode traducibles
Declara el texto de shortcodes con pom_shortcode_translation_schema. POM Translate y POM AI consumen este filtro compartido, y POM Theme obtiene de él sus indicadores de traducción del builder. Registra el filtro desde el bootstrap normal de tu tema o plugin, fuera de los hooks exclusivos del editor, para que las peticiones en segundo plano vean la misma declaración.
add_filter(
'pom_shortcode_translation_schema',
static function ( array $schema ): array {
$schema['acme_banner'] = array(
'attributes' => array( 'heading', 'button_label' ),
'content' => true,
'groups' => array(
'items' => array( 'title', 'description' ),
),
);
return $schema;
}
);
Usa etiquetas y nombres de atributo en minúsculas. Cada entrada admite:
| Clave | Tipo | Significado |
|---|---|---|
attributes |
Matriz de cadenas | Atributos con nombre que contienen texto legible. Por defecto, una lista vacía. |
content |
Booleano | Si el contenido incluido puede contener prosa o shortcodes anidados. Por defecto true; usa false para código, scripts y otros cuerpos técnicos. |
groups |
Mapa de atributo a matriz de cadenas | Miembros de texto de una matriz de objetos JSON codificada en URL, como un param_group de WPBakery. Por defecto, un mapa vacío. |
Los grupos se traducen campo por campo. Se acepta tanto la codificación de espacio %20 como +, igual que en los grupos de parámetros de WPBakery. Los miembros no listados, los valores numéricos, los booleanos, el orden de los objetos y la configuración anidada conservan sus valores. El JSON no válido se deja sin cambios. Los campos de grupo aparecen como Shortcode group field en Translate contents. Un atributo de grupo nunca se traduce como una cadena de texto completa.
Una declaración compartida explícita tiene prioridad sobre los indicadores de WPBakery. Sin una, POM Translate usa los indicadores translatable disponibles, incluidos los indicadores de los hijos de grupos de parámetros. Los atributos sin declaración se conservan. La prosa interior se gestiona por separado, y vc_raw_html mantiene su comportamiento de decodificación y codificación.
Integraciones existentes de POM Translate
El siguiente filtro sigue disponible para integraciones que solo necesiten declaraciones de atributos en POM Translate:
add_filter(
'pom_translate_parser_translatable_shortcode_attributes',
static function ( array $map ): array {
$map['acme_banner'] = array( 'heading', 'button_label' );
return $map;
}
);
Una entrada en este filtro heredado anula la lista de atributos compartida para la misma etiqueta solo en POM Translate. No sustituye la declaración compartida content ni groups. Prefiere el filtro compartido cuando ambos productos de traducción deban usar las mismas reglas.
Para decisiones condicionales sobre atributos, filtra pom_translate_parser_should_extract_shortcode_attribute, que recibe la decisión por defecto, la etiqueta, el nombre del atributo y el valor. Esto se aplica tanto a la ruta de Visual Composer como a la de contenido ordinario. Los grupos declarados se procesan por separado.
Registra solo los atributos que contengan prosa dirigida al visitante. Excluye IDs, URLs, clases CSS, colores, claves de enumeración, parámetros de consulta y ajustes numéricos. El contenido interior del shortcode lo gestiona el analizador por separado.
POM Theme suministra declaraciones para sus módulos con independencia del runtime del editor de WPBakery. Entre estas se incluyen títulos, botones, etiquetas accesibles, mensajes de formularios, texto de listados y campos de grupo de Timeline. Conserva las demás entradas al añadir una integración; usa una lista de atributos vacía para declarar que un elemento no contiene atributos traducibles.
Guarda contenido representativo después de añadir el registro, o usa Generate pending translations → Process all. Verifica los shortcodes anidados y repetidos, el HTML enriquecido con comillas simples y dobles, los valores multilínea, el texto de grupo que contenga comillas, el texto literal similar a marcadores de posición y las alternativas de origen cuando falte una traducción. Confirma que las URLs, los IDs y la configuración nunca aparezcan como prosa y sigan siendo válidos después del renderizado. Mover un componente o reordenar las filas de un grupo puede cambiar la identidad de las cadenas; revisa las traducciones después de esas ediciones.