PHPとMySQLですっきりカウンター

WordPressのプラグインがとにかく嫌い。そもそもWordpressも好きじゃないかもしれない。
でも英語も読めないからDrupalとか使えないし・・・。プラグインが大嫌いなのは、ソースをゴチャゴチャしてくれるし、裏ソースまで見ないと何しているか全くわからないし、それぞれのプラグイン同士でわけのわからない互換性でバグを起こしたり、バージョンアップに対応していない。プラグインを使うってなると、多くの時間をさいて、安全性などを確認しまくる。jquaryなどで済むのなら、断然、そっちの方がいいと思っている。老舗で評価の高いプラグインを使うべきだよね。

プラグインを使いたくなきゃ自作だ。

今回は超シンプル、カウンターを作った。サイトを開くと、「あなたは ****人目のお客様です」みたいなアレ。それを「Access counted 17」みたいな文字列で、さりげなく表示。PHPでやるメリットとしては、シンプルな文字列のみの表示で、余計なscriptタグやiframeなど入らない点だ。Wordpressのプラグインを探せばあるかもしれないが、まーた余計なソースを増やす顛末になるに違いない。

MySQLで新規テーブルを作る

PHP7では使えないコードでした。
PHP5.4.45で動作確認できるものです。いつか、PHP7でも使えるようにします。

1457494073839
フィールド    : countinc
フィールドタイプ : VARCHAR
長さ/セット   : 10
空の値      : not null
なお、わざわざデータベースを新規作成しなくても、wordpressのデータベースにテーブル作成で事足りる。

mysqlcounter.phpを作る

<?php
$ct_hostname = "DBホスト名";
$ct_username = "DBユーザ名";
$ct_password = "DBパスワード";
$ct_dbname = "_DB名";
$ct_tablename = "counter";

$ct_connect = mysql_connect($ct_hostname, $ct_username, $ct_password,true) or die ("サーバーに接続できません");
mysql_select_db($ct_dbname) or die ("データベースに接続できません");
$ct_sql = "SELECT * FROM $ct_tablename";
$ct_counterInt = mysql_query($ct_sql, $ct_connect) or die ("クエリーを実行できません");
mysql_close($ct_connect);

while ($ct_row = mysql_fetch_array($ct_counterInt)) {
$ct_num = $ct_row["countinc"];
}
$ct_num++;

$ct_connect = mysql_connect($ct_hostname, $ct_username, $ct_password) or die ("サーバーに接続できません");
mysql_select_db($ct_dbname) or die ("データベースに接続できません");
mysql_query ("UPDATE $ct_tablename SET countinc=$ct_num") or die ("カウンターを更新できません");
mysql_close($ct_connect);

echo ("Access counted $ct_num");
?>

DBとはデータベースのこと。先ほどのMySQLサーバーのホスト名など入れる。

mysql_connect($ct_hostname, $ct_username, $ct_password,true)

wordpress挿入の場合、「,true」を入れるのがポイント。

任意の場所に埋め込み

<?php include dirname(__FILE__) . '/mysqlcounter.php'; ?>

カウンターを入れたい箇所に追記。footer.phpなどに入れれば、サイトのどのページを見てもカウントアップしてしまう。トップページなど特定のページだけに表示したい場合は、その旨記載。wordpressの固定ページ、投稿ページに入れ込みたい場合は、ショートコード(function.phpで設定)などを使う。

以上でMySQLカウンターの設置完了。

サンプル:→ショートコードで出力 
フッター部にも同様に出力されています。
※同じページに2箇所掲載されている為、カウントが2回されています。エラーではありません。

コメントを残す

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