Pustaka queries
Pustaka queriesKirim email ke pelanggan untuk memberitahu adanya postingan baru

Kirim email ke pelanggan untuk memberitahu adanya postingan baru

Query ini mengirim email ke semua pengguna, memberitahu tentang pembuatan postingan baru di situs.

Query ini mencakup kemampuan untuk memilih pengguna yang berlangganan daftar email, namun bagian tersebut dalam query dikomentari. (Harap hapus komentar jika diperlukan.) Pengguna yang berlangganan adalah mereka yang memiliki meta email_list dengan nilai new_posts.

Query ini mengharuskan endpoint memiliki Nested Mutations yang diaktifkan.

query GetPostAndExportData($postId: ID!) {
  post(by: { id: $postId }) {
    content @export(as: "postContent")
    title @export(as: "postTitle")
    url @export(as: "postURL")
  }
 
  hasPost: _notNull(value: $__post)
    @export(as: "doSendEmail")
}
 
query GetEmailData
  @depends(on: "GetPostAndExportData")
  @include(if: $doSendEmail)
{ 
  siteName: optionValue(name: "blogname")
    @export(as: "siteName")
 
  emailSubject: _sprintf(
    string: "There is a new post: \"%s\"",
    values: [$postTitle]
  )
    @export(as: "emailSubject")
}
 
mutation SendEmailToUsersAboutNewPost
  @depends(on: "GetEmailData")
  @include(if: $doSendEmail)
{
  users
  # # Retrieve only users subscribed to an email list (uncomment if needed)
  # (
  #   filter: {
  #     metaQuery: {
  #       key: "email_list",
  #       compareBy: {
  #         arrayValue: {
  #           value: "new_posts",
  #           operator: IN
  #         }
  #       }
  #     }
  #   }
  # )
  {
    displayName
    email
 
    emailMessageTemplate: _strConvertMarkdownToHTML(
      text: """
 
Hi {$userDisplayName},
 
There is a new post on the **{$siteName}** website:
 
[**{$postTitle}**]({$postURL})
 
{$postContent}
  
      """
    )
      @remove
    emailMessage: _strReplaceMultiple(
      search: ["{$userDisplayName}", "{$siteName}", "{$postTitle}", "{$postContent}", "{$postURL}"],
      replaceWith: [$__displayName, $siteName, $postTitle, $postContent, $postURL],
      in: $__emailMessageTemplate
    )
      @remove
 
    _sendEmail(
      input: {
        to: $__email
        subject: $emailSubject
        messageAs: {
          html: $__emailMessage
        }
      }
    ) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
    }
  }
}