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 للصفحة الرئيسية. شكل البيانات الصحيح من أجل مبدل لغة مخصص.

الاستعلام عن مقالة معينة بواسطة المعرف أو المعرّف النصي للرابط، بأي لغة

يحصل شكلان من الاستعلامات على مقالة مترجمة واحدة بواسطة معرّفها الخاص باللغة:

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 خاصة بها. تعود الحقول الفرعية داخل المكررات والمحتوى المرن بتلك اللغة أيضًا. يقرأ الاستعلام أدناه المكرر 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" } تلك اللغة للاستعلام بأكمله.

يحتفظ حقل العلاقة المضبوط على نسخ بالفعل بالمعرفات المترجمة. عندما ينسخ WPML الحقل إلى الترجمة، يبدل ACFML كل معرّف بترجمته. ويحتفظ بالمعرف الأصلي عندما لا تكون الترجمة موجودة بعد. أنت تضبط هذا التفضيل لكل حقل في محرر مجموعة حقول ACF، ضمن Translation preferences. راجع حقول العلاقة في دليلنا لترجمة حقول ACF المخصصة.

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

تُرجع المقالة الإسبانية الدليل الإسباني.

حدد اللغة في كل طلب. لا يحمل الاستعلام الذي يقرأ مقالة واحدة بواسطة المعرف أو المعرّف النصي للرابط أي مرشّح 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" }
              ]
            }
          }
        }
      ]
    }
  }
}

يشير الحقل إلى دليلين. واحد منهما فقط مترجم إلى الإسبانية، لذا يُرجع الاستعلام الإسباني دليلاً واحدًا. تحصل واجهتك الأمامية على قائمة أقصر، ولا تحصل أبدًا على مزيج من اللغات. ترجم المقالة المفقودة وستظهر في نفس الاستعلام.

تبقى القائمة بلغة واحدة عندما يكون نوع المنشور قابلاً للترجمة. إذا ضبطت نوع المنشور على عرض كمترجم، يُرجع WPML الدليل غير المترجم في اللغة الافتراضية. حينها تخلط القائمة بين اللغات.

WPML GraphQL مضمّن مع WPML

يأتي WPML GraphQL مع Multilingual CMS و WPML Agency. لا يوجد شراء منفصل، ولا توجد رسوم لكل موقع. اشترِ WPML مرة واحدة وستحصل حزمة Headless متعددة اللغات الخاصة بك على طبقة اللغة الخاصة بها. إذا كان لديك WPML بالفعل، فقم بتفعيل WPML GraphQL من صفحة تنزيلات WPML الخاصة بك.