WPML

תשאול תוכן לפי שפה מצד הלקוח שלך

כל שאילתת WPGraphQL מקבלת ארגומנט language. סנן פוסטים, סוגי תוכן מותאמים אישית, מונחי טקסונומיה, תפריטים, פריטי תפריט ותגובות לפי שפה בשדה יחיד – ללא סינון לאחר שאילתה בצד הלקוח, ללא הכפלת נפח הבקשות וללא ניחוש שפה.

query PostsES {
  posts(where: { language: "es" }) {
    nodes { slug uri title }
  }
}

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

רוצה הכל ללא קשר לשפה עבור מפת אתר או ספירה מצטברת? העבר language: "all".

שליפת כל תרגום של צומת בשאילתה אחת

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

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

תפריטים רב-לשוניים, טקסונומיות, תגובות ונתוני שפה

מעבר לפוסטים, WPML GraphQL מרחיב את אותו ארגומנט language וטיפול בתרגום גם ל:

  • תפריטים ופריטי תפריט. menus(where: { language: "fr" }) ו־menuItems(where: { language: "fr" }) עבור ניווט לפי שפה.
  • מונחי טקסונומיה. קטגוריות, תגיות וטקסונומיות מותאמות אישית עוקבות כברירת מחדל אחר שפת הפוסט שלהן וניתן לתשאל אותן ישירות לפי שפה.
  • תגובות. החזרת תגובות המשויכות לפוסטים בשפה מסוימת.
  • שאילתות languages ו־defaultLanguage. פירוט כל שפה המותקנת באתר עם קוד, אזור, שם מקורי, כתובת URL של דגל המדינה וכתובת URL של דף הבית. מבנה הנתונים הנכון עבור בורר שפות מותאם אישית.

תשאול פוסט מסוים לפי מזהה (ID) או מזהה כתובת, בכל שפה

שני מבני שאילתה מקבלים פוסט מתורגם יחיד לפי המזהה הספציפי לשפה שלו:

query PostBySlug {
  post(id: "hola-mundo", idType: SLUG) {
    title slug uri
  }
}
query PostById {
  post(id: "2", idType: DATABASE_ID) {
    title slug uri
  }
}

כל אחת מהצורות מחזירה את הפוסט המתורגם עם הכותרת, מזהה הכתובת וה־URI המתורגמים שלו – ללא לוגיקה נפרדת של "האם זה תרגום?" בצד הלקוח.

מתוחזק מול הגרסה הנוכחית של WPGraphQL

בדקנו את WPML GraphQL 5.2.0 עם WPGraphQL 2.24.1 ו־WPGraphQL for ACF 3.0.0. הצוות שמתחזק את WPGraphQL עובד איתנו כדי שהשכבה הרב-לשונית תמשיך להתקדם יחד עם הסכמה. כאשר WPGraphQL משחרר גרסה חדשה, WPML GraphQL נמצא מיד בעקבותיו.

עובד עם ACF כאשר אתה מוסיף את ACFML ואת WPGraphQL for ACF

אתרי Headless רבים בונים את מודל התוכן שלהם ב־Advanced Custom Fields וחושפים אותו דרך WPGraphQL. הוסף את ACFML ואת WPGraphQL for ACF, ונתוני ה־ACF שלך יעקבו אחר אותם כללי שפה כמו שאר הסכמה.

תשאול עמוד אפשרויות של ACF בכל שפה

עמודי אפשרויות נמצאים מחוץ לכל פוסט, ולכן הם מקבלים ארגומנט language משלהם. תת-שדות בתוך רכיבי חזרה (repeaters) ותוכן גמיש מוחזרים גם הם באותה שפה. השאילתה להלן קוראת את הרכיב החוזר offices ואת שדה התוכן הגמיש promos. מאז WPGraphQL for ACF 3.0.0, עמוד אפשרויות נמצא בסכמה רק כאשר אתה מפעיל עבורו את show_in_graphql.

query StoreSettingsES {
  storeSettings(language: "es") {
    storeContact {
      heading
      offices { city openingHours }
      promos {
        ... on StoreContactPromosBannerLayout { bannerText }
      }
    }
  }
}

שדות קשר מחזירים את הפוסט המתורגם

שדות ACF בפוסטים ובסוגי תוכן מותאמים אישית אינם מקבלים ארגומנט language משלהם. הם עוקבים אחר השפה של הבקשה. בשאילתה להלן, where: { language: "es" } קובע את השפה הזו עבור השאילתה כולה.

שדה קשר המוגדר למצב העתקה (Copy) כבר מכיל מזהים (IDs) מתורגמים. כאשר WPML מעתיק את השדה לתרגום, ACFML מחליף כל מזהה בתרגום שלו. הוא שומר על המזהה המקורי כאשר התרגום עדיין אינו קיים. אתה מגדיר העדפה זו לכל שדה בעורך קבוצות השדות של ACF, תחת העדפות תרגום (Translation preferences). ראה שדות קשר במדריך שלנו לתרגום שדות מותאמים אישית של ACF.

query BlendsES {
  posts(where: { language: "es" }) {
    nodes {
      title
      postExtras {
        relatedGuide {
          nodes { ... on Post { title languageCode } }
        }
      }
    }
  }
}

הפוסט בספרדית מחזיר את המדריך בספרדית.

הגדר את השפה בכל בקשה. שאילתה שקוראת פוסט אחד לפי מזהה (ID) או מזהה כתובת אינה נושאת פילטר language. במקרה כזה היא רצה בשפת ברירת המחדל, והפוסטים הקשורים מוחזרים גם הם בשפת ברירת המחדל.

האופן שבו אתה מגדיר את השפה תלוי בפורמט ה־URL של WPML שלך. עם דומיין לכל שפה, קרא לנקודת הקצה של אותה שפה: https://es.example.com/graphql. עם פרמטר השפה, הוסף אותו לנקודת הקצה: /graphql?lang=es. בפורמט הספרייה אין נקודת קצה לכל שפה, לכן סנן לפי שפה בתוך השאילתה.

כאשר תרגום חסר

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

{
  "data": {
    "posts": {
      "nodes": [
        {
          "title": "Nuestras mezclas de la casa",
          "postExtras": {
            "relatedGuide": {
              "nodes": [
                { "title": "Guía de compra de espresso", "languageCode": "es" }
              ]
            }
          }
        }
      ]
    }
  }
}

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

הרשימה נשארת בשפה אחת כאשר סוג התוכן ניתן לתרגום. אם תגדיר את סוג התוכן כהצג כמתורגם (Display as translated), WPML יחזיר את המדריך הלא מתורגם בשפת ברירת המחדל. במקרה כזה הרשימה תערבב שפות.

WPML GraphQL כלול ב־WPML

WPML GraphQL מסופק עם Multilingual CMS ו־WPML Agency. ללא רכישה נפרדת, ללא תשלום לכל אתר. קנה את WPML פעם אחת ולמחסנית ה־Headless הרב-לשונית שלך יש את שכבת השפה שלה. אם כבר יש לך את WPML, הפעל את WPML GraphQL מתוך עמוד ההורדות של WPML שלך.