WordPress, PHP

WordPress DB プラグイン アクセスカウンター

WordPress DBを使ったプラグイン 作成 昔ながらのアクセスカウンターを作る

寄稿しました。詳細は上記を。

 

 

 

# vi ./sgaccess/sgaccess.php

<?php
/**
 * @package SgAccess
 * @version 0.1.1
 */
/*
Plugin Name: SgAccess
Plugin URI: http://example.com/plugins/sgaccess/
Description: Plugin development tutorial for making plugin with MySQL
Author: Kanehiro Yuu
Version: 0.1.1
Author URI: https://sys-guard.com/
*/


//実行するよ!
$sgRankingObj = new Sg_Access();


class Sg_Access
{

        public function __construct()
        {
                global $sgaccess_version;
                $sgaccess_version = '1.0';

                //初期化
                $this->admin_init();
        }


        public function admin_init()
        {
                register_activation_hook( __FILE__, array($this, 'sgaccess_install') ); // プラグイン有効化時にDB作成
                register_activation_hook( __FILE__, array($this,'sgaccess_install_data') ); //プラグイン有効化時にDB初期化
                register_deactivation_hook( __FILE__, array($this,'sgaccess_delete_data') ); //プラグイン停止時に実行する関数を登録

                add_action( 'plugins_loaded', array($this, 'myplugin_update_db_check') );//プラグイン更新時のDB更新チェック
                add_shortcode( "SG-COUNTER", array($this, 'counter_start') );//カウンター作動
                add_filter('widget_text', 'do_shortcode');//ウィジェットでショートコードが使用できるようにする。
        }

        // カウンター機能作動 =============================================================

        // ショートコードタグへのアクセス毎にこの関数が実行される。
        public function counter_start()
        {
                $this->access_count();
                $this->access_show();
        }


        public function access_count()
        {
                global $wpdb;
                $table_name = $wpdb->prefix . 'sgaccess';

                $sql = "UPDATE {$table_name} SET count = count + 1 WHERE id = 1;";
                $wpdb->query($sql);
        }


        public function access_show()
        {
                global $wpdb;
                $table_name = $wpdb->prefix . 'sgaccess';

                $sql = "SELECT id, count FROM {$table_name} WHERE id = 1;";
                $results = $wpdb->get_results($sql);
                foreach($results as $row){
                        if($row->id == 1){
                                echo "<h2>あなたは<strong>{$row->count}番目のゲストです。</strong></h2>";
                                echo "<MARQUEE>訪問者はゲストブックに書き込みして下さい。</MARQUEE>";
                        }
                }
        }
        // カウンター機能 ここまで =====================================================


        //DBの作成 ※プラグイン有効時
        function sgaccess_install()
        {
                global $wpdb;
                $table_name = $wpdb->prefix . 'sgaccess';

                $charset_collate = $wpdb->get_charset_collate();

                $sql = "CREATE TABLE $table_name (
                id mediumint(9) NOT NULL AUTO_INCREMENT,
                time datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
                count int UNSIGNED NOT NULL,
                UNIQUE KEY id (id)
        )
        {$charset_collate}, ENGINE=InnoDB;";

                require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
                dbDelta( $sql );

                add_option( 'sgaccess_version', $sgaccess_version );
        }

        //DBの初期化 ※プラグイン有効時
        function sgaccess_install_data()
        {

                global $wpdb;
                $table_name = $wpdb->prefix . 'sgaccess';

                $count_init = 0;

                $wpdb->insert(
                        $table_name,
                        array(
                                'time' => current_time( 'mysql' ),
                                'count' => $count_init,
                        )
                );
        }


        //DB更新チェック ※プラグイン更新
        function myplugin_update_db_check()
        {
                if ( get_site_option( 'sgaccess_version' ) != $sgaccess_version ) {
                        $this->sgaccess_install();
                }
        }


        //DBの削除 ※プラグイン停止時
        function sgaccess_delete_data()
        {
                global $wpdb;
                $table_name = $wpdb->prefix . 'sgaccess';

                delete_option('sgaccess_version');
                $sql = "DROP TABLE {$table_name};";
                $wpdb->query($sql);
        }

}//Sg_Access

 

 

 

 

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

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

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)