- Trạng thái
- Đang mở
- Được báo cáo cho
- Advanced Custom Fields Multilingual 2.1.5
- Plugin/giao diện liên quan
- Advanced Custom Fields (ACF)
- Thẻ chủ đề
- Compatibility
Tổng quan về lỗi
Khi sử dụng Advanced Custom Fields (ACF) với WPML, bạn có thể gặp sự cố logic điều kiện không hoạt động chính xác trong các ngôn ngữ phụ. Điều này xảy ra khi logic điều kiện phụ thuộc vào các trường sử dụng tham chiếu dựa trên đối tượng hoặc thuật ngữ, chẳng hạn như trường phân loại hoặc đối tượng bài viết.
Giải pháp tạm thời
Vui lòng đảm bảo tạo bản sao lưu toàn bộ trang web của bạn trước khi tiếp tục.
- Thêm mã sau vào tệp functions.php trong giao diện của bạn.
/** * 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 ); } } );