寄稿しました。詳細は上記を。
# 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