category

Craft CMS でエントリの削除を定期的に実施する #craftcms

2020-05-26

普通はプラグインでやるような内容だとは思うのだけど。
先日書いた GraphQL でのエントリ削除。

2020-05-22

これを定期的に実施してみる。

GraphQL で削除対象のエントリを取り出して、そのエントリをループして削除する。

// 削除対象の statusid の値が4のエントリを取り出す
{% set articles = gql('{
  entries(section:"hogehoge",statusid:4){
    id
    title
  }
}') %}

// 削除するmutationのベース
{% 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 %}

こういう処理をするテンプレートを用意する。

そのテンプレートに対して、 cron で1日1回とかアクセスするようにして処理を実行する。
@tinybeans に教えてもらって。

0 0 * * * curl --silent --compressed "URL"

とりあえずこれで削除ができる。