他カテゴリ

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

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
他カテゴリ

SASUKEオーディションに出た時の話

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

約2年間ブロックチェ-ンゲームをして

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

17万円のPCでTwitterやってるのはもったいないのでETHマイニングを始めた話

Like token Tip token
46.60 ALIS
Eye catch
ゲーム

【初心者向け】Splinterlandsの遊び方【BCG】

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

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

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

オランダ人が語る大麻大国のオランダ

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

京都のきーひん、神戸のこーへん

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

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

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

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

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

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

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

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

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

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

Like token Tip token
124.82 ALIS