Otomasyon
OtomasyonOtomasyon Yapılandırıcı

Otomasyon Yapılandırıcı

Sitede bir olay gerçekleştiğinde otomatik olarak bir GraphQL Persisted Query çalıştırır.

Otomasyon Yapılandırıcı modülü, WordPress düzenleyicisi aracılığıyla otomasyon oluşturmak için bir "otomasyon yapıcı" kullanıcı arayüzü sağlar.

Otomasyon tetikleyicisi herhangi bir WordPress action hook'tur ve eylem, bir GraphQL persisted query'nin çalıştırılmasıdır.

Otomasyon oluşturmak için "Otomasyon Kuralları" adlı bir Custom Post Type sağlanmaktadır. Yeni bir kayıt oluştururken aşağıdakiler için yapılandırma sağlamalıyız:

  • Otomasyon tetikleyici(leri)
  • Otomasyon eylemi
Otomasyon Kuralı düzenleyicisi
Otomasyon Kuralı düzenleyicisi

Otomasyon eylemi

Otomasyon eylemi, hangi GraphQL persisted query'nin çalıştırılacağını belirtir.

Bu öğeyi aşağıdaki unsurlarla yapılandırın:

Persisted Query: Çalıştırılacak GraphQL persisted query'yi seçin (publish veya private durumundakilerin tümü arasından)

Statik GraphQL Değişkenleri: Persisted query'deki GraphQL değişkenleri için değerleri içeren bir JSON dizesi sağlayın. Bunlar statik değerlerdir.

Örneğin:

{
  "emailSubject": "New post on the site"
}

Bu değerler, "dinamik" GraphQL değişkenleri tarafından geçersiz kılınır (aşağıdaki Otomasyon tetikleyici(leri) bölümüne bakın).

İşlem adı (isteğe bağlı): Persisted query birden fazla işlem içeriyorsa, hangisinin çalıştırılacağını belirtebilirsiniz (varsayılan olarak sonuncusu çalıştırılır).

Kullanıcı olarak çalıştır (isteğe bağlı): GraphQL persisted query'yi belirli bir kullanıcı olarak oturum açarak çalıştırır; kullanıcı slug'ını sağlayın.

Otomasyon Kuralı - Persisted Query Çalıştırma
Otomasyon Kuralı - Persisted Query Çalıştırma

Otomasyon tetikleyici(leri)

Bir otomasyon tetikleyicisi, hangi WordPress action hook'unun Persisted Query çalıştırmasını tetikleyeceğini belirtir. Birden fazla tetikleyici sağlayabiliriz (örneğin: yalnızca bir gönderi veya sayfanın düzenlenmesine tepki vermek için edit_post_post ve edit_post_page hook'larını sağlayabiliriz).

Bu öğeyi aşağıdaki unsurlarla yapılandırın:

Hook adı: WordPress action hook adı.

Dinamik GraphQL Değişkenleri: GraphQL değişkenlerini hook işlevine sağlanan argümanlarla eşleştiren bir JSON dizesi sağlayın. Bu dinamik değerler daha sonra çalışma zamanında queries'e sağlanacaktır.

JSON sözlüğü, anahtar olarak GraphQL değişken adını ve değer olarak action hook'taki argümanın konumunu içermelidir.

Örneğin, draft_post hook'u (gönderi durumu geçişlerinden) $post_id'yi birinci argüman olarak sağlar. Ardından, aşağıdaki JSON, $postID GraphQL değişkeninin hook'a iletilen $post_id değerini alacağını belirtir:

{
  "postID": 1
}

(Bu örnekte 1, "draft_post tarafından gönderilen 1. argümanın değeri" anlamına gelir.)

"Dinamik" ve "statik" GraphQL değişkenleri için aynı anahtar kullanılırsa (yukarıdaki Otomasyon eylemi bölümüne bakın), dinamik değerler öncelik alır.

Otomasyon Kuralı - Action hook
Otomasyon Kuralı - Action hook

WordPress hook eşlemesi

Otomasyon Yapılandırıcı'da doğrudan kullanılamayan WordPress hook'ları vardır; çünkü bu hook'lar, GraphQL değişkeni olarak girilemeyecek bir PHP nesnesi sağlar.

Bu hook'lardan bazıları Gato GraphQL tarafından eşlenmiştir; gatographql: öneki ve aynı hook adıyla yeni bir hook tetiklenerek, GraphQL değişkeni olarak girilebilen karşılık gelen nesne ID'si değişken olarak iletilmektedir.

Örneğin, WordPress hook'u draft_to_publish, $post'u (WP_Post türünde) değişken olarak iletir. Gato GraphQL bu hook'u gatographql:draft_to_publish olarak eşler ve $postId'yi (int türünde) değişken olarak iletir.

Aşağıdaki tablo, eşlenmiş WordPress hook'larını listeler:

WordPress hookGato GraphQL tarafından eşlenen hook
{$old_status}_to_{$new_status} (WP_Post $post ileterek)gatographql:{$old_status}_to_{$new_status} (int $postId, string $postType ileterek)

Buna ek olarak, Gato GraphQL belirli olayları daha kolay yakalamak ve otomatikleştirmek amacıyla birçok WordPress hook'unu hook adında fazladan bilgi ekleyerek yeniden tetikler.

Örneğin, meta değerleri oluşturan, güncelleyen ve silen hook'lar, meta anahtarını hook adının bir parçası olarak içererek tetiklenir. Böylece, bir gönderiye öne çıkan görsel atandığında gatographql:added_post_meta:_thumbnail_id hook'u üzerinden bir otomasyon tetiklenebilir.

Bunlar ek Gato GraphQL hook'larıdır:

Kaynak WordPress hookTetiklenen Gato GraphQL hook
{$old_status}_to_{$new_status}
(WP_Post $post ileterek)
gatographql:any_to_{$new_status}
gatographql:{$old_status}_to_any
gatographql:{$old_status}_to_{$new_status}:{$post_type}
gatographql:any_to_{$new_status}:{$post_type}
gatographql:{$old_status}_to_any:{$post_type}
(Tümü int $postId, string $postType ileterek)
created_termgatographql:created_term:{$taxonomy}
set_object_termsgatographql:set_object_terms:{$taxonomy}
gatographql:updated_object_terms:{$taxonomy} (Eski ve yeni terimler arasında fark olduğunda)
added_post_metagatographql:added_post_meta:{$meta_key}
gatographql:added_post_meta:{$post_type}:{$meta_key} (5. parametre olarak string $post_type da ileterek)
updated_post_metagatographql:updated_post_meta:{$meta_key}
gatographql:updated_post_meta:{$post_type}:{$meta_key} (5. parametre olarak string $post_type da ileterek)
deleted_post_metagatographql:deleted_post_meta:{$meta_key}
gatographql:deleted_post_meta:{$post_type}:{$meta_key} (5. parametre olarak string $post_type da ileterek)
added_term_metagatographql:added_term_meta:{$meta_key}
gatographql:added_term_meta:{$taxonomy}:{$meta_key} (5. parametre olarak string $taxonomy da ileterek)
updated_term_metagatographql:updated_term_meta:{$meta_key}
gatographql:updated_term_meta:{$taxonomy}:{$meta_key} (5. parametre olarak string $taxonomy da ileterek)
deleted_term_metagatographql:deleted_term_meta:{$meta_key}
gatographql:deleted_term_meta:{$taxonomy}:{$meta_key} (5. parametre olarak string $taxonomy da ileterek)

Sorunları giderme

Otomasyon çalıştırılmadıysa, otomasyonun yapılandırmasında veya persisted query'nin çalıştırılmasında bir hata olabilir.

Çalıştırma Günlükleri

Daha fazla ayrıntı için Sorunları giderme bölümüne bakın.

Hata günlükleri

Tüm yapılandırma sorunları (GraphQL değişkenleri için hatalı biçimlendirilmiş JSON dizesi veya silinmiş bir persisted query'ye işaret etme gibi) ve çalıştırma hataları (atılan istisnalar veya GraphQL sorgusu içindeki errors girişleri gibi) PHP'nin error_log işlevine gönderilir; dolayısıyla WordPress hata günlüğünde yazdırılır.

Bu hata günlükleri [Gato GraphQL] dizesiyle başlar.

Örnekler

Bunların nasıl kullanılabileceğine dair bazı örnekler:

  • Yapay zeka kullanarak yeni gönderiler için öne çıkan görsel oluşturma
  • Gönderi yayımlandığında zorunlu bir blok ekleme
  • Bir gönderi güncellendiğinde tüm görsel kaynaklarındaki ve bağlantılardaki http'yi https ile değiştirme
  • Yeni bir gönderi olduğunda yöneticiye e-posta gönderme
  • Yorumuna yeni bir yanıt gelen kullanıcıya e-posta gönderme
  • [Multisite] Yeni bir gönderiyi farklı dillere çevirme ve çevrilen gönderileri her siteye ekleme
  • Harici bir hizmette eylem gerçekleştirme (örneğin: yeni gönderileri Facebook'ta otomatik olarak paylaşma)

Örneğin, draft durumunda yeni bir gönderi oluşturulurken, önceden tanımlanmış Yeni gönderiye yorum bloğu ekle otomasyon kuralı core/comments bloğunun mevcut olup olmadığını kontrol eder ve yoksa gönderinin altına ekler:

Yeni 'draft' gönderilere yorum bloğunu otomatik ekleme
Yeni 'draft' gönderilere yorum bloğunu otomatik ekleme