แนวคิด ไอเดีย และกลยุทธ์
แนวคิด ไอเดีย และกลยุทธ์ความคล้ายคลึงกันระหว่าง WordPress hooks และ GraphQL directives

ความคล้ายคลึงกันระหว่าง WordPress hooks และ GraphQL directives

แอปพลิเคชัน WordPress มีความสามารถในการขยายฟังก์ชันได้สูง ผ่านปลั๊กอินและการใช้ hooks (actions และ filters) เพื่อปรับเปลี่ยนพฤติกรรมของโค้ดส่วนใดส่วนหนึ่ง ไม่ว่าจะเป็น WordPress core, ธีม หรือปลั๊กอิน hooks คือโค้ดขนาดเล็กที่สามารถแทนที่ค่า หรือดำเนินการบางอย่างได้เมื่อถูกเรียกใช้

ในตัวอย่างนี้ filter block_categories ช่วยให้สามารถแก้ไขหมวดหมู่บล็อกที่เปิดใช้งานใน WordPress editor ได้:

\add_filter(
  'block_categories',
  function(array $categories): array
  {
    return [
      ...$categories,
      [
        'slug' => 'graphql-api-access-control',
        'title' => __('Access Control for GraphQL', 'graphql-api'),
      ],
    ];
  }
);

hooks นั้นเรียบง่าย ยืดหยุ่น และทรงพลัง แม้ว่าอาจถูกใช้ในทางที่ผิดได้ แต่หากนำไปใช้อย่างถูกต้อง จะทำให้แอปพลิเคชันสามารถขยายได้อย่างมากในแนวทางที่นักพัฒนาไม่ได้วางแผนไว้ล่วงหน้า

GraphQL directives ในฐานะ hooks

Directives สามารถถือได้ว่าเป็นส่วนที่เทียบเท่ากับ hooks ใน WordPress แต่อยู่ใน GraphQL

เช่นเดียวกับ WordPress hook, directive คือฟังก์ชันที่แก้ไขค่าของฟิลด์ จึงช่วยเสริมฟังก์ชันการทำงานอื่นๆ เช่นเดียวกับคู่เปรียบเทียบของมัน มันเรียบง่าย ยืดหยุ่น และทรงพลัง

ตัวอย่างเช่น สมมุติว่าเราดึงรายการชื่อโพสต์ด้วย query นี้:

query {
  posts {
    title
  }
}

ผลลัพธ์เหล่านี้เป็นภาษาอังกฤษ เราจะแปลเป็นภาษาฝรั่งเศสได้อย่างไร? ด้วยการใช้ directive @strTranslate บนฟิลด์ title ซึ่งรับค่าของฟิลด์เป็น input เรียก Google Translate API เพื่อแปล และส่งคืนผลลัพธ์ ดังใน query นี้:

query {
  posts {
    title @strTranslate(from: "en", to: "fr")
  }
}

กรณีการใช้งานสำหรับการขยายฟังก์ชันนั้นชัดเจน: เมื่อมีค่าสำหรับฟิลด์ title เราสามารถแก้ไขมันได้ตามต้องการผ่าน directive ในกรณีนี้คือการแปลเป็นภาษาฝรั่งเศสผ่าน @strTranslate แต่ยังอาจเป็นการแปลงเป็นตัวพิมพ์ใหญ่/เล็กผ่าน @strUpperCase และ @strLowerCase หรืออื่นๆ ก็ได้