- 상태
- 미해결
- 보고된 제품
- Advanced Custom Fields Multilingual 2.1.5
- 관련 플러그인/테마
- Advanced Custom Fields (ACF)
- 주제 태그
- Compatibility
문제 개요
WPML과 함께 Advanced Custom Fields (ACF)를 사용할 때 보조 언어에서 조건부 로직이 제대로 작동하지 않는 문제가 발생할 수 있습니다. 이 현상은 조건부 로직이 택소노미 또는 글 객체 필드와 같이 객체 기반 또는 용어 기반 참조를 사용하는 필드에 의존할 때 발생합니다.
임시 해결 방법
진행하기 전에 사이트의 전체 사이트 백업을 완료했는지 확인하세요.
- 테마의 functions.php 파일에 다음 코드를 추가하세요.
/** * 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 ); } } );