他カテゴリ

ホームページのリンク切れページをメール通知する

mizuno's icon'
  • mizuno
  • 2019/04/07 22:47
Content image

ホームページを閲覧していると、リンク切れ(リンク先のページが『見つかりません』になる)になることがあります。訪問者にとって不親切ですし、ホームページの評価が下がることにも繋がります。
そこで、自分のホームページでリンク切れがあった場合に、メール通知するようにしました。こうすることで、リンク切れが生じても素早く対応できます。

concrete5のイベント機能を活用する

concrete5のフォームで自動返信でも使った、イベント機能を活用します。(イベントはconcrete5の用語で、プログラム実行の途中で、追加の処理を行うものです。WordPress のアクションフックに似た働きです。)

今回は、on_page_not_foundというイベントを使います。on_page_not_foundは、リクエストされたページが見つからなかったに発火するイベントです。このイベントにメール送信スクリプトを追加すると、

ページが見つからなかった
⇒on_page_not_foundイベントが発火する
⇒⇒on_page_not_foundイベントに追加されているメール送信スクリプトが実行される

となります。

コード

<?php // MIT Licence  (C) 2019 Fumito MIZUNO
namespace Concrete\Package\OunziwPageNotFoundNotify;

use Concrete\Core\Package\Package;
use Concrete\Core\Support\Facade\Events;

class Controller extends Package {
    protected $pkgHandle = 'ounziw_page_not_found_notify';
    protected $appVersionRequired = '8.4';
    protected $pkgVersion = '0.7';
    public function getPackageDescription()
    {
        return t("on_page_not_found");
    }
    public function getPackageName()
    {
        return t("on_page_not_found");
    }
    public function on_start()
    {
        Events::addListener('on_page_not_found', function() {
            $mh = $this->app->make('mail');
            $sh = $this->app->make('helper/security');
            $mh->setSubject('リンク切れ報告');

            $to_email = 'mizuno@calculator.jp';
            $from_email = 'info@calculator.jp';

            $mailbody = 'リクエストされたページ' . PHP_EOL;
            $mailbody .= $sh->sanitizeURL($_SERVER['REQUEST_URI']);
            $mailbody .= PHP_EOL;
            $mailbody .= 'リンク元のページ' . PHP_EOL;
            $mailbody .= $sh->sanitizeURL($_SERVER['HTTP_REFERER']);
            $mailbody .= PHP_EOL;

            $mh->to($to_email);
            $mh->from($from_email);
            $mh->setBody($mailbody);
            $mh->sendMail();
        });
    }
}

上のようなコードを、packages/ounziw_page_not_found_notify/controller.php に書き込みます。(フォルダ・ファイルは必要に応じて作成しておきます)

$to_email$from_emailは、適宜変更してください。

オープンソースで公開

コードはMITライセンスで公開しますので、誰でも無償で利用できます。商用利用(例:ウェブ制作会社などで顧客への提供)もOKです。

 

他の記事もごらんください。

 

Article tip 0人がサポートしています
獲得ALIS: Article like 21.25 ALIS Article tip 0.00 ALIS
mizuno's icon'
  • mizuno
  • @mizuno
月70万PVウェブメディア「計算フォーム」 https://calculator.jp/ でウェブ集客支援。書籍「WordPressユーザーのためのPHP入門」他一冊。TWITTER: @ounziw

投稿者の人気記事
コメントする
コメントする
こちらもおすすめ!
Eye catch
クリプト

Bitcoin史 〜0.00076ドルから6万ドルへの歩み〜

Like token Tip token
947.13 ALIS
Eye catch
クリプト

NFT解体新書・デジタルデータをNFTで販売するときのすべて【実証実験・共有レポート】

Like token Tip token
120.79 ALIS
Eye catch
クリプト

ブロックチェーンの51%攻撃ってなに

Like token Tip token
0.00 ALIS
Eye catch
トラベル

わら人形を釘で打ち呪う 丑の刻参りは今も存在するのか? 京都最恐の貴船神社奥宮を調べた

Like token Tip token
484.35 ALIS
Eye catch
クリプト

ジョークコインとして出発したDogecoin(ドージコイン)の誕生から現在まで。注目される非証券性🐶

Like token Tip token
38.31 ALIS
Eye catch
他カテゴリ

機械学習を体験してみよう!(難易度低)

Like token Tip token
69.82 ALIS
Eye catch
グルメ

バターをつくってみた

Like token Tip token
124.75 ALIS
Eye catch
他カテゴリ

警察官が一人で戦ったらどのくらいの強さなの?『柔道編』 【元警察官が本音で回答】

Like token Tip token
114.82 ALIS
Eye catch
クリプト

Bitcoinの価値の源泉は、PoWによる電気代ではなくて"競争原理"だった。

Like token Tip token
159.32 ALIS
Eye catch
トラベル

梅雨の京都八瀬・瑠璃光院はしっとり濃い新緑の世界

Like token Tip token
213.49 ALIS
Eye catch
トラベル

無料案内所という職業

Like token Tip token
84.20 ALIS
Eye catch
他カテゴリ

テレビ番組で登録商標が「言えない」のか考察してみる

Like token Tip token
26.20 ALIS