PHPでSlackからWordPress/自作サイトのアクセスログを送るbot

[logcall file='log']

[greet file='greet']

コードはネット上のものをパクってつなぎ合わせたものです。
Slackにした理由は簡単に作れそうだったからです。
Cronの設定を使って毎日決まった時間に勝手にログが届くようになってます。
直接レンタルサーバーのサイトから見ることもできますが毎日それをやるのはめんどくさかったので自動で送ってもらうようにしました。
自分で作ったサイトだとすぐできましたがwordpressに埋め込むのは少し手間でした。
二つとも方法を紹介しておきます。
注意としてCronの設定ができないと自動でできないこともないですがページビューに依存します。
wp-cronとかいうものもあるらしいですがまだ触ったことがないので自分にはわかりません。疑似的なものらしいので必ず動くわけではないそうです。

 

Slackへのつなげかた

二つの方法を紹介する前にまずSlackへつなげる必要があります。
これに関しては完全にサイトをみただけなんで基本的にそのサイトを紹介して終わりです。
下記のサイトにはソースコードものってるのでとてもわかりやすいです。
もし閉鎖してたりしたら教えてください。

http://munouya.com/website/php-to-slack-post.html

以上です。
ネットにつながっていればローカルからでもSlackにメッセージが届きます。
最初は text のところに適当な言葉を入れてテストした方がいいです。
コードはほんの少しだけ改造します。

 

自作サイトでのアクセスログの送り方

まずアクセスログをとるためのコードを書きます。これも人のコードパクっただけです。

上記のサイトがとってもわかりやすいです。一応自分のコードも載せときます。

まあパクリですね。変数とかそのままだし。

date_default_timezone_set関数足したくらいです。

今回自分が取得したのはアクセスした時間とipアドレスとどのファイルにアクセスしたのかという情報だけです。

一番下にserver変数でできること一覧とタイムゾーン一覧が書いてあるサイトのリンク載せときました。
server変数は自分の用途によってお好みで選んでください。
できること多すぎて逆にめんどくさいかも知れません(笑)。

次はSlackの方のコードです。上のコードと同階層にあるものとします。

こっちもほぼパクリです。違うのは text のところをファイルの中身にしているところとこのファイルを実行すると log.php で作られたファイルが消去されることです。
log.php では その日の年月日をもとにした 'year-month-day'.txt を作成したのでそれにそろえてSlackの方でも date関数を使ってます。
自分の場合は txt がたまりまくったらいやだったので毎日削除させる方式にしました。
書いてる途中に気づきましたが無駄に二回も $filename宣言してますね......

あとはログを書かせてCronの設定をいじるだけです。

この一行をアクセスログを取得したいphpファイルに書くだけでアクセスログの方は完成です。
ただアクセスログはあまり見られたくないものだとは思うので適当なフォルダに入れて.htaccessで制限をかけたりした方がいいと思います。

フォルダに入れるのであれば fopen のところを下のように変更してください。

ルートは適当にすると変なところにファイルができたりするので気をつけてください。
Cronの設定の方はレンタルサーバーによってちがうと思うので各々調べてみてください。
頻度も時間も自由に決められるのでそのあたりも好きに設定してみてください。

Cronの設定ができなくても使いたいという方やページを見てくれたら毎回Slackに送るようにしたいという方は log.php のあとに Slack.php をつなげて一つのファイルに両方の機能をいれることもできます。人気のサイトになるとSlackがうるさくなるという欠点がありますね。

 

WordPressの記事のアクセスログの送り方

これめっちゃめんどくさかったです。最初はできないのかと思ってましたが最終的にできたので良しとしたいと思います。

WordPressにおいてはまず自分が使っているテーマの名前の把握が必要です。

次に

wp-content/themes/自分が使っているテーマの名前/functions.php

にショートコードを追加します。

あとはlog.phpを少し変えるだけです。

こんな感じです。server変数はいろいろできるのでお好みで。
get_template_directory()
がとっても大事です。
これで functions.php と同じ階層にアクセスログの txt がいくはずです。
slack.php の方は上と何も変わっていません。
wp_log.php と slack.php はフォルダを一個つくって隔離しといた方がいいと思います。
隔離する場合 get_template_directory().'フォルダ名/'.'txt'といった形で追加する必要があります。
あとは記事の中で

上のように打つと wp_log.php が include されます。

以上です。

 

下のサイトにserver変数のすべてがのっているらしいので自分の欲しい情報が他にあるのであればみてみてください。

下のサイトにはいろんなタイムゾーンが書いてあります。

ではまた。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA