- الحالة
- مفتوحة
- أُبلغ عنها لـ
- Advanced Custom Fields Multilingual 2.1.5
- الإضافة/القالب ذو الصلة
- Advanced Custom Fields (ACF)
- وسوم الموضوع
- Compatibility
نظرة عامة على المشكلة
عند استخدام Advanced Custom Fields (ACF) مع WPML، قد تواجه مشكلات تتعلق بعدم عمل المنطق الشرطي بشكل صحيح في اللغات الثانوية. يحدث هذا عندما يعتمد المنطق الشرطي على حقول تستخدم مراجع تعتمد على الكائنات أو المصطلحات، مثل حقول التصنيف أو كائن المقالة.
حل بديل مؤقت
يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.
- أضف الكود التالي إلى ملف 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 ); } } );