Scopri l'elenco completo delle costanti e degli hook di ACF Multilingual (ACFML), con esempi per utilizzarli nel tuo codice.
Hook di ACF Multilingual (ACFML)
acfml_should_translate_acf_entity
Questo hook ti permette di determinare se i campi o i gruppi di campi di ACF devono essere tradotti. Utilizzando questo filtro, puoi saltare la traduzione di campi o gruppi specifici in base alla tua logica personalizzata.
Tipo: Filtro
Disponibilità: ACFML 2.1.4
Parametri:
$shouldTranslate
(bool) (Obbligatorio) Indica se il campo o il gruppo di campi deve essere tradotto. L'impostazione predefinita è true.
$entity
(array) (Obbligatorio) L'entità da tradurre, che è un array di campi o un array di gruppi.
$entityType
(string) (Opzionale) Il tipo di entità da tradurre. Può essere ‘field’ o ‘group’.
Esempio di utilizzo dell'hook:
add_filter( 'acfml_should_translate_acf_entity', function( $shouldTranslate, $entity, $entityType ) {
if ( 'field' === $entityType ) {
return false;
}
return $shouldTranslate;
} );
acfml_field_group_mode_field_translation_preference
Questo filtro ti permette di sovrascrivere la preferenza di traduzione predefinita per i campi ACF quando un gruppo di campi utilizza la modalità Stessi campi o Campi diversi.
Nota: questo filtro modifica solo la preferenza di traduzione predefinita, non la preferenza salvata dei singoli campi. Se modifichi l'impostazione predefinita, devi salvare di nuovo i gruppi di campi interessati affinché la nuova impostazione predefinita venga applicata.
Tipo: Filtro
Disponibilità: ACFML 2.0.0
Parametri:
$fieldTranslationPreference (int) (Obbligatorio) La preferenza di traduzione predefinita per il campo. Valori possibili:
0— Non tradurre. WPML ignora completamente il campo.1— Copia. Il valore del campo viene copiato in tutte le lingue e rimane sincronizzato.2— Traduci. Il valore del campo viene reso disponibile per la traduzione.3— Copia una volta. Il valore del campo viene copiato in tutte le lingue una volta, dopodiché può essere modificato in ogni lingua in modo indipendente.
$groupMode (string) (Obbligatorio) La modalità di traduzione del gruppo di campi. Valori possibili: translation o localization.
$field (array) (Obbligatorio) L'array del campo ACF.
Esempio di utilizzo dell'hook:
add_filter( 'acfml_field_group_mode_field_translation_preference', function( $fieldTranslationPreference, $groupMode, $field ) {
$fieldType = $field['type'] ?? null;
if ( 'link' === $fieldType ) {
return 2; // WPML_TRANSLATE_CUSTOM_FIELD
}
return $fieldTranslationPreference;
}, 10, 3 );
Questo esempio forza il tipo di campo link a essere traducibile, sovrascrivendo la sua preferenza predefinita copy o copy_once.
Costanti di ACF Multilingual (ACFML)
ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS
A partire da ACFML 2.1.5, puoi utilizzare questa costante per includere le stringhe del gruppo di campi nel lavoro di traduzione dell'articolo.
Per abilitare questa opzione, aggiungi la seguente riga al tuo file wp-config.php:
define( 'ACFML_EXCLUDE_FIELD_GROUP_STRINGS_IN_POST_JOBS', false );
Note:
- Se hai creato un lavoro di traduzione prima di aggiungere questo codice al tuo file wp-config.php, annullalo e creane uno nuovo.
- Se necessario, puoi inviare le etichette e le scelte dei campi per la traduzione tramite la Dashboard di traduzione.
ACFML_HIDE_FIELD_ANNOTATIONS
A ogni campo tradotto, ACF Multilingual aggiunge informazioni sul valore nella lingua originale.
Per rimuovere queste informazioni dai campi tradotti, puoi aggiungere la seguente riga al file wp-config.php del tuo sito:
define( 'ACFML_HIDE_FIELD_ANNOTATIONS', true );
ACFML_REPEATER_SYNC_DEFAULT
Puoi utilizzare questa costante per impostare il valore predefinito della funzionalità di sincronizzazione del campo Repeater. L'impostazione predefinita è true. Questo significa che i campi Repeater vengono sincronizzati automaticamente in tutte le traduzioni. Se imposti questa costante su false, la sincronizzazione del campo Repeater verrà disabilitata.
Puoi sovrascrivere il valore predefinito di ACFML_REPEATER_SYNC_DEFAULT nel file functions.php del tuo tema:
define('ACFML_REPEATER_SYNC_DEFAULT', false);
ACFML_SCAN_LOCAL_FIELDS
Impostando questa costante su false si disabilita la scansione dei file JSON per i campi locali.
Questo significa che se modifichi la preferenza di traduzione nei campi locali, non verrà sincronizzata con il database. Devi impostare la preferenza di traduzione manualmente per i campi.
Per maggiori informazioni, consulta la documentazione ufficiale di ACF sull'utilizzo del JSON locale.