- Status
- Offen
- Gemeldet für
- Advanced Custom Fields Multilingual 2.1.5
- Zugehöriges Plugin/Theme
- Advanced Custom Fields (ACF)
- Themen-Tags
- Compatibility
Übersicht über das Problem
Wenn Sie Advanced Custom Fields (ACF) mit WPML verwenden, kann es zu Problemen kommen, bei denen die bedingte Logik in Sekundärsprachen nicht korrekt funktioniert. Dies geschieht, wenn die bedingte Logik von Feldern abhängt, die objektbasierte oder termbasierte Referenzen verwenden, wie beispielsweise Taxonomie- oder Beitragsobjektfelder.
Problemumgehung
Bitte stellen Sie sicher, dass Sie über ein vollständiges Website-Backup Ihrer Website verfügen, bevor Sie fortfahren.
- Fügen Sie den folgenden Code zur Datei functions.php Ihres Themes hinzu.
/** * WPML Workaround for compsupp-wpmltriage-3649 */ add_action( 'init', function() { if ( defined( 'ICL_SITEPRESS_VERSION' ) ) { add_filter( 'acf/load_field', function ( $field ) { if ( empty( $field['conditional_logic'] ) || ! is_array( $field['conditional_logic'] ) ) { return $field; } foreach ( $field['conditional_logic'] as $group_index => $rules ) { if ( ! is_array( $rules ) ) { continue; } foreach ( $rules as $rule_index => $rule ) { if ( isset( $rule['field'], $rule['value'] ) && is_numeric( $rule['value'] ) ) { // Fetch the parent field $parent_field = acf_get_field( $rule['field'] ); if ( ! isset( $parent_field['type'] ) ) { continue; } if ( $parent_field['type'] === 'taxonomy' ) { $rule['value'] = apply_filters( 'wpml_object_id', $rule['value'], $parent_field['taxonomy'], true ); } elseif ( $parent_field['type'] === 'post_object' ) { $post_types = $parent_field['post_type'] ?? ''; // can be multiple if ( is_array( $post_types ) ) { foreach ( $post_types as $post_type ) { $translated_id = apply_filters( 'wpml_object_id', $rule['value'], $post_type, true ); if ( $translated_id && $translated_id !== $rule['value'] ) { $rule['value'] = $translated_id; break; } } } else { $rule['value'] = apply_filters( 'wpml_object_id', $rule['value'], $post_types, true ); } } $field['conditional_logic'][ $group_index ][ $rule_index ] = $rule; } } } return $field; }, 100 ); } } );