2020-05-22

GraphQL で Craft CMS のエントリのステータスを無効にしたり削除する #craftcms

Craft 3.5 ベータで GraphQL の Mutation が使えるようになって色々できることが増えた。

先日書いたのでエントリは削除するとした。

単に最初エントリのステータスを無効にする方法がわからなかっただけなのだけど、 enabledfalse でよかった。

docs/graphql.md at 3.5 · craftcms/docs
https://github.com/craftcms/do...

エントリのステータスを無効にする場合

mutation{
        save_bphub_bphub_Entry(
          authorId:"1",
          id: xxx,
          enabled: false
        ){
          id
        }  
}

save_bphub_bphub_Entry のところに何か別の方法があるのかなぁと思ったけど、 enabled を見落としていた。

エントリを削除する

エントリ自体を削除する場合は deleteEntry を利用する。

mutation{
  deleteEntry(
    id:1234
  )
}

これで削除できる。

docs/graphql.md at 3.5 · craftcms/docs
https://github.com/craftcms/do...

削除できたかどうかのレスポンスが返ってくる。

ただ、複数削除するとかで id は配列だとだめっぽい感じなので、そこはこの処理をループする感じで。。。

{% set deleteEntry %}
mutation($id:Int!){
  deleteEntry(
    id:$id
  )
}
{% endset %}

{% for article in articles.data.entries %}
  {% set eid = article.id %}
  {% set variables = {'id': (eid)} %}
  {% set deleteEntries = gql(deleteEntry, variables) %}
{% endfor %}

とりあえず複数エントリの削除ができた。