WPML
סטטוס
נפתר
דווח עבור
WPML Multilingual CMS 3.3.6

סקירה כללית של התקלה

התוסף הנלווה Repeater מספק סוג שדה repeater שמיועד להכיל סוגי שדות אחרים. כדי שתוכל לשכפל תוכן בתוך repeater, עליך להוסיף קטע קוד ולהוסיף בקפידה שמות שדות כפי שמתואר בסעיף פתרון עוקף.

בעיה זו קיימת כרגע עבור סוגי השדות הבאים:

- תמונה

- קובץ

- גלריה

- טקסונומיה

- אובייקט פוסט

- קישור לעמוד

הערה: תוכל להשתמש בקטע הקוד שסופק עבור כל סוגי השדות האחרים. ההבדל היחיד הוא בשם השדה. כלומר, תוכל להשתמש בקטע קוד זה כדי לפתור בעיות בשכפול של סוגי שדות repeater וסוגי שדות רגילים כאחד.

תוכל למצוא את הבעיות המוכרות עבור סוגי שדות אלה כאן

פתרון עוקף

השתמש בקטע קוד זה בקובץ functions.php שלך כדי שהשכפול יעבוד כראוי:

function wpml_fix_acf_duplication( $value_to_filter, $target_language, $meta_data ) {
  // Field names should be placed into following array.
  $fields = array(
     'taxonomy_field' => 'some_taxonomy_name',
     'repeater_field_0_repeater_taxonomy_field' => 'some_other_taxonomy_name',
     'repeater_field_1_repeater_taxonomy_field' => 'some_other_taxonomy_name',
     'repeater_field_0_repeater_child_0_repeater_child_taxonomy_field' => 'some_other_taxonomy_name',
     'repeater_field_0_repeater_child_1_repeater_child_taxonomy_field' => 'some_other_taxonomy_name',
     'repeater_field_1_repeater_child_0_repeater_child_taxonomy_field' => 'some_other_taxonomy_name',
     'repeater_field_1_repeater_child_1_repeater_child_taxonomy_field' => 'some_other_taxonomy_name'
  );


  if ( array_key_exists( $meta_data['key'], $fields ) ) {
		$value = maybe_unserialize( $value_to_filter );

		if ( is_array( $value ) ) {
			// If custom field value contain array of IDs to translate, usually used for gallery and taxonomy field types.
			$translated_ids = array();

			foreach ( $value as $v ) {
				$translated_ids[] = apply_filters( 'wpml_object_id', $v, $fields[ $meta_data['key'] ], true, $target_language );
			}

			return maybe_serialize( $translated_ids );
		} else {
			// If custom field value contain single ID to translate, usually used for image and file field types.
			$translated_id = apply_filters( 'wpml_object_id', $value, $fields[ $meta_data['key'] ], true, $target_language );

			return $translated_id;
		}
	}

	return $value_to_filter;
}
add_filter( 'wpml_duplicate_generic_string', 'wpml_fix_acf_duplication', 999, 3 );

שים לב שעליך להחליף את שמות השדות ('taxonomy_field’, ‘repeater_field_0_repeater_taxonomy_field’ וכו’) בשמות השדות שבאתר שלך. בצע את השלבים הבאים כדי לעשות זאת.

בדוגמה שלעיל, יש לנו את השדות הבאים בקבוצת השדות שלנו:

– שדה טקסונומיה אחד

– שדה Repeater אחד עם שדה טקסונומיה ושדה Repeater “בן” נוסף עם שדה טקסונומיה משלו.

משמעות הדבר היא שהקינון נראה כך:

Taxonomy
Repeater {
         Taxonomy
         Repeater Child { 
                        Taxonomy 
         }
}

כלומר, עליך להגדיר את השדות שלך בהתאם לצרכים שלך, כפי שעשינו בדוגמה שמוצגת בתמונה הבאה.

image04

כאשר תערוך את הפוסט, העמוד או כל סוג תוכן שבו אתה משתמש עם השדות המותאמים אישית שלך, תראה את השדות האלה בפעולה. התמונה הבאה מציגה כיצד זה נראה בדוגמה שלנו:

image03

הערה: עליך להחליף את הזוגות key =>; value במערך בערכים המתאימים.

החלף את ה־keys של המערך:

אם תסתכל היטב על שמות השדות שלנו כמפתחות, תבחין שהאינדקס של השדות מתחיל מ־0.

משמעות הדבר היא שה־repeater הראשון שלך הוא 0, השני הוא 1 וכן הלאה. מספרי ה־repeater האלה מופרדים באמצעות קווים תחתונים מסוגי שדות בן אחרים עם _0_, _1_, _2_

לדוגמה, השם של שדה הטקסונומיה בתוך ה־repeater הראשון שלנו הוא 'repeater_field_0_repeater_taxonomy_field', וזהו השם שנכניס במערך של קטע הקוד לעיל. הקפד להתמקד בשלושה דברים:


  1. בתוך מערך, כמפתחות, הוסף כל שדה שבו אתה משתמש וודא שהוא מאחד הסוגים המפורטים למטה

  2. שם השדה מעוצב כראוי

  3. שם השדה נוסף עבור כל שורת repeater בנפרד, כלומר אם יש לך 10 שמות של שורות repeater, זה ייראה כך: 'repeater_field_0_some_custom_field', 'repeater_field_1_some_custom_field', 'repeater_field_2_some_custom_field' … וכן הלאה עד ל־'repeater_field_9_some_custom_field'.
בנוסף, תוכל למצוא את כל שמות השדות שקיימים תחת “הגדרת תוכן רב-לשוני” אם תסתכל מתחת לשדות Advanced Custom Fields ועורך ה־WYSIWYG שלך לאחר שמירת הפוסט, כפי שמוצג בתמונה הבאה.

image05

החלף את ה־values כגון: ‘some_taxonomy_name’, ‘some_other_taxonomy_name’ וכו’ בהתאם. זהו סוג האלמנט שאליו שייך המזהה (ID). יכול להיות post, page, attachment, {custom post type key}, nav_menu, nav_menu_item, category, post_tag, {custom taxonomy key}

למידע נוסף, עיין בתיעוד ההוק שלנו כאן.

כל התקלות הידועות →