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

במקרים מסוימים המזהים מקודדים לתוך ה-PHP של ערכת העיצוב ובאחרים, המשתמש בוחר אותם במסך ההגדרות של ערכת העיצוב.

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

WPML כולל שתי אפשרויות להשגת המטרה.

ניתן להפעיל את התאמת מזהים אוטומטית או להשתמש ב-wpml_object_id באופן ידני בערכת העיצוב.

באיזו אפשרות להשתמש?

התאמת מזהים אוטומטית לא מחייבת שינויים בקוד. ניתן להשתמש בה עם כל ערכת עיצוב וזה 'פשוט עובד'. החיסרון של השימוש בה הוא שהיא צורכת מעט יותר זמן עיבוד וגישה למסד הנתונים, מכיוון ש-WPML ייצור וווים לפונקציות רבות ויבדוק אם הפלט נכון עבור השפה הפעילה.

התאמת מזהים ידנית באמצעות הפונקציה wpml_object_id תשיג את אותן תוצאות ויכולה להיות יעילה יותר במונחי עיבוד. אולם היא מחייבת קידוד משמעותי בערכת העיצוב.

אם אתה בונה ערכת עיצוב מאפס, מומלץ להשתמש ב-wpml_object_id כדי לבצע זאת באופן ידני. אם אתה מתחיל מערכת עיצוב קיימת, ייתכן שביצוע שינוים לערכת העיצוב אינה פעולה מציאותית וכנראה שהדרך הטובה ביותר היא התאמת מזהים אוטומטית.

בכל מקרה, שימוש בתוסף מטמון יצמצם לאפס את ההשפעה של פעולה זו על הביצועים. שימוש במטמון תמיד מומלץ לאתרים מכל הגדלים. WPML פועל היטב עם WP Super Cache ועם W3 Total Cache (שבהם אנו משתמשים באתרים שונים).

1) התאמת מזהים אוטומטית

ניתן לקשור את WPML לפונקציות API של WordPress, כדי שיזהה מתי פריטים ספציפיים נטענים ויכוונן את המזהים כך שהתוצאות יותאמו לשפה הפעילה.

פונקציונליות זו מופעלת כברירת מחדל וניתן להגיע אליה דרך WPML->שפות:

כוונון מזהים לפונקציונליות רב-לשונית

פעולה זו תתאים באופן אוטומטי את כל המזהים וניתן להשתמש בה בכל ערכת עיצוב של WordPress שמשתמשת נכון ב-API (כמעט כל ערכת עיצוב שניתן למצוא).

2) ידנית, באמצעות הפונקציה wpml_object_id

לחלופין, אם התאמת מזהים אוטומטית כבויה, ניתן להשתמש בפונקציה wpml_object_id כדי להשיג את אותו הדבר באופן ידני.

apply_filters( 'wpml_object_id', int $element_id, string $element_type, bool $return_original_if_missing, mixed $ulanguage_code )

הערה: עבור גרסאות WPML >=3.2 יש להשתמש בוו הסינון wpml_object_id. החל מ-WPML 3.3, הפונקציה icl_object_id תויגה כהוצאה משימוש והוסרה לחלוטין ב-3.3

שימוש לדוגמה

echo apply_filters( 'wpml_object_id', 4, 'category', TRUE  );

החזר את מזהה הקטגוריה בשפה הנוכחית עבור מזהה קטגוריה 4. אם התרגום חסר הוא יחזיר את המקורי (כאן: מזהה קטגוריה 4).

עיין בדף ה-API שלנו כדי לראות דוגמאות נוספות והסבר מפורט יותר על אופן השימוש

תרגום מערכים של מזהים

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

function lang_object_ids($object_id, $type) {

    if( is_array( $object_id ) ){

        $translated_object_ids = array();

        foreach ( $object_id as $id ) {

            $translated_object_ids[] = apply_filters( 'wpml_object_id', $id, $type, true, $current_language );

        }

        return $translated_object_ids;

    } else {

  return apply_filters( 'wpml_object_id', $object_id, $type, true, $current_language );

 }

}

פונקציה זו גם מקבלת את סוג האובייקט כארגומנט.

לדוגמה, כדי לקבל מערך של מזהיי קטגוריות עבור קטגוריות 1, 3 ו-6 נבצע את הקריאה:

lang_object_ids(array(1,3,6),'category')

הצגת רכיבי דפים בשפות שונות

הפרמטר האופציונלי ulanguage_code מאפשר לערבב רכיבי דפים בשפות שונות.

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

  1. קבל את מזהה הדף בשפה שבה קיימת הגלריה.
  2. בצע לולאה על התמונות עבור דף זה והצג אותן.