WordPressで運用している自主サービスWebサービス集めましたの改造メモです。改造といっても、投稿記事を承認して公開したら、つまりWebサービスが投稿されたら草が生える(pixela)にWebhookを送るというメモです。
WordPressからもプラグインを用いることでわりかし簡単に草を生やせることが分かりました。
基本的にpixelaからのWebhookのやり方は以前書いたScrapboxとpixelaの連携を参照してください。pixelaとWebhookなどのイメージが出来ている前提で以下を進めます。
運用イメージ
実際に動いているのはこんな感じです。Wordpressウィジェットとして貼り付けています。
公開されている記事がないと何もないです(笑)今回は草は黒色なので灰色っぽくなると公開されているところって感じですね。記事中にも当然iframeで表示出来ます。
WordPressで草生やす手順
1.WP Webhooksプラグインをインストールする
WP Webhooksプラグインをインストールして有効化します。
2.設定→WP Webhooks→Settingsへ進む
Activate “Send Data” Triggersにある、Send Data On New Postにチェックを入れて、Save allボタンで保存する。
3.Send Dataタブへ移動し、WebhookURLを登録する
Send Data On New Postという項目が新規で追加されていることを確認する。項目をクリックすると下に展開されて、WebhookNameは分かりやすい名前を、WebhookURLにはWebhookURLを貼り付ける。 その後Addボタンで登録する。
4.ActionのSettingsボタンをクリックして設定する
Trigger on selected post typesを投稿に、Trigger on initial post status changeを公開済みにする。これは投稿で投稿済みのもので発動するという意味になる。それ以外の動きで発動したいなら変えてみてください。
なお、Trigger on initial post status changeは多分ですが、最初の公開だけで、編集等して公開しなおしても反映されないよっぽいことが右に書かれています。理由はWordpressのデータベースでメタ情報を見るので状態変更は無視してるみたいなことかと。
5.Actionにある「Send demo」を押して草が生えるか確認する
実動作としてブログ記事投稿を公開済みにするのもありですが、その前にSend demoを押してみて確認します。pixelaのグラフがカウントされていればオッケーです。ちなみに、send demoを押しても何も画面的な反応は無骨にないです(笑)
6.ブログ公開済みになったら草が生えるか確認する
最後に実際の動作で確認してみます。
と、思ったら。。。
ここでトラブル発生!うまく動かないぞ!
以下奮闘部分なので、結論がほしい方は7へ進んでください(笑)
トラブルメモ・試行錯誤メモ
運用的には、最初は承認待ち状態(レビュー待ち)でWordpressで保存されています。これをチェックして審査OKなら公開にしているのですね。しかしTrigger on initial post status changeは最初の状態しかチェックしないため、レビュー待ちでやると、レビュー待ちの未承認投稿で発動してしまうということです。これは意味がない(正確でない)ので、他の方法がないかを考える。
例えば、他のアクションとして、Send Data On Post Updateが使えないか。これは記事が更新された時なので、全ての投稿記事になってしまうがある程度の目安にはなる。レビュー待ち投稿段階で増えるので、BackendOnlyにチェックを入れる。これで管理画面からの投稿公開のみで発動する。(ただし自分の投稿記事もカウントされるのでそれはもう仕方ないと諦めた)目安という程度にしようという理解。
とおもったが、記事を削除する(ゴミ箱に移動=下書きに状態変更=UPDATEという解釈)でも発動するっぽいのでさすがに辞めるか。ゴミ箱を空にするタイミングでは発動しない模様。
冷静になって、レビュー待ち記事の件数でバロメーター(承認数ではない)を測る方向にする。以下でテストする。Send Data On New Postで
Trigger on selected post types:投稿
Trigger on initial post status change:レビュー待ち
それぞれにチェックする。これで、投稿依頼の数がカウントされるかを見る。→これだとなぜか2カウントされてしまう。
7.最終的な解決はこれで決まり!
Send Data On New Postで
Trigger on selected post types:投稿
Trigger on initial post status change:公開済み
とすることで、レビュー待ち投稿は無視して、それを公開済みにしたものが1カウントされました。あれ?これ最初やったんだけどな・・・?もしかしてレビュー待ちと公開済みを間違えていたとかかもしれませんが、ひとまずこれで様子を見ていこうと思います。
ひとまずこれでブログ記事を公開すると、草が生えるということができました。
やってて気づいたpixelaメモ
最初はpixelをクリアするために、毎回pixel deletedだと日付部分は0カウントになるのですが、たまにTodayカウントが0にならないこともありました。そこで、途中からpixel updateでquantityを0にすることで即時反映をさせたりしています。このあたりはよしなに。
課題
完璧!というほどには実は遠く、WordpressでWebhookを飛ばせるのでオッケーなんですが、実はブログとして記事を普通に投稿してもカウント対象です。カテゴリ毎まで設定できないはず(確認した限り)なので、まあ適度にゆるくカウントするで良しとしました。厳密性が求められるところでは要検討ですね。もちろんそこまで厳密な何かをやっていませんが。