外部サイトにて作成されたWordpressプラグインの導入に関して
初めて投稿させていただきます、よろしくお願いします。
私はWordpress(バージョンは最新版)にてブログを投稿しています。
自由にカスタマイズが出来るいいねボタンを探して色々と調べて、やっと求めていたいいねボタンのサイトにたどり着きました。
こちらのFISH&BREADさんのサイトが作成したBF Click Counterというプラグインです。
ただ、Wordpress上のプラグインに公開していないという事でコードだけサイトに公開されていました。
サイトの設置方法を見ながら有効化させる所までは出来たのですが、使い方のショートコードを記述しても私のサイトに反映されず、ショートコードのまま反映されてました。
記述したショートコード→[bfcc id="test"]てすと[/bfcc]
私はプラグイン・PHPに関して全くの無知です。
原因が分かる方がおりましたら教えていただけますでしょうか。
発生している問題
ショートコードを記述してもいいねボタンが反映されない。
該当のソースコード
PHP
1<?php 2/* 3Plugin Name: BF Click Counter 4Author: Taichi MARUYAMA 5Plugin URI: http://maruyama.breadfish.jp/ 6Description: シンプルなクリックカウンターです。 7Version: 0.11 8Author URI: http://maruyama.breadfish.jp/ 9Text Domain: bf-click-counter 10*/ 11 12global $wpdb; 13global $bf_click_counter; // IDをキーにしてカウント数を格納 14global $bf_click_ip; // IDをキーにしてIPアドレスを格納 15 16/** 17 * DBで使うテーブル名を返す 18 * 19 * @access public 20 * @return void 21 */ 22function bf_click_counter_get_table_name() { 23 24 global $wpdb; 25 return $wpdb->prefix . "bf_click_counter"; 26 27} 28 29/** 30 * アクティベーション。テーブルの作成を行う。 31 * 32 * @access public 33 * @return void 34 */ 35function bf_click_counter_activation() { 36 37 global $wpdb; 38 $charset_collate = $wpdb->get_charset_collate(); 39 $table_name = bf_click_counter_get_table_name(); 40 41 $sql = "CREATE TABLE $table_name ( 42 id mediumint(9) NOT NULL AUTO_INCREMENT, 43 keyname text NOT NULL, 44 count int NOT NULL, 45 ipaddress text NOT NULL, 46 register_datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 47 update_datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 48 UNIQUE KEY id (id) 49 ) $charset_collate;"; 50 51 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); 52 dbDelta( $sql ); 53 54} 55 56register_activation_hook(__FILE__, 'bf_click_counter_activation'); 57 58/** 59 * ロード時に変数を初期化する. 60 * 61 * @access public 62 * @return void 63 */ 64function bf_click_counter_initialize() { 65 global $wpdb, $bf_click_counter, $bf_click_ip; 66 $bf_click_counter = array(); 67 $table_name = bf_click_counter_get_table_name(); 68 69 $results = $wpdb->get_results("SELECT * FROM $table_name"); 70 foreach($results as $one) { 71 $bf_click_counter[$one->keyname] = $one->count; 72 $bf_click_ip[$one->keyname] = $one->ipaddress; 73 } 74} 75add_action('init', 'bf_click_counter_initialize'); 76 77/** 78 * ショートコードの処理。ボタン(カウント数)を表示する 79 * 80 * @access public 81 * @param mixed $atts 82 * @return void 83 */ 84function bf_click_counter_display($atts) { 85 global $bf_click_counter; 86 87 extract(shortcode_atts(array( 88 'id' => '0', 89 ), $atts)); 90 91 // カウンターがすでにある場合 92 if (array_key_exists($id, $bf_click_counter)) { 93 return '<a href="javascript:void(0);" class="btn btn-default bf-click-counter" data-id="' . $id . '">いいね(<span class="count">' . $bf_click_counter[$id] . '</span>)</a>'; 94 } 95 96 // カウンターがない場合はカウント数ゼロでボタンを表示 97 return '<a href="javascript:void(0);" class="btn btn-default bf-click-counter" data-id="' . $id . '">いいね(<span class="count">0</span>)</a>'; 98} 99add_shortcode('bfcc', 'bf_click_counter_display'); 100 101/** 102 * JavaScript(Ajax)の出力(いいねボタンの押下を受け付ける) 103 * 104 * @access public 105 * @return void 106 */ 107function bf_click_counter_ajax() { 108?> 109 <script> 110 var bf_ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>'; 111 112 jQuery(function() { 113 jQuery('.bf-click-counter').click(function() { 114 var self = this; 115 jQuery.ajax({ 116 type: 'POST', 117 url: bf_ajaxurl, 118 data: { 119 'id' : jQuery(this).attr('data-id'), 120 'action' : 'bf_click_counter_countup', 121 }, 122 success: function( response ){ 123 jQuery(self).find('.count').html(response); 124 } 125 }); 126 127 return false; 128 }); 129 }) 130 131 </script> 132<?php 133} 134add_action( 'wp_head', 'bf_click_counter_ajax'); 135 136/** 137 * Ajaxの受付処理 138 * 139 * @access public 140 * @return void 141 */ 142function bf_click_counter_countup(){ 143 bf_click_counter_initialize(); 144 global $wpdb, $bf_click_counter, $bf_click_ip; 145 $id = $_POST['id']; 146 $ipaddr = $_SERVER["REMOTE_ADDR"]; 147 $nowdate = date('Y-m-d h:m:s'); // 登録日付 148 149 // カウンターがすでにある場合、インクリメントしてDBをアップデート 150 if (array_key_exists($id, $bf_click_counter)) { 151 // 同じIPからの連続いいねは阻止 152 if ($bf_click_ip[$id] != $ipaddr) { 153 $bf_click_counter[$id]++; 154 $wpdb->update(bf_click_counter_get_table_name(), array('count' => $bf_click_counter[$id], 'ipaddress' => $ipaddr, 'update_datetime' => $nowdate), array('keyname' => $id)); 155 } 156 157 // カウンターがない場合、DBにインサート 158 } else { 159 $bf_click_counter[$id] = 1; // 初期値は1 160 $wpdb->insert(bf_click_counter_get_table_name(), array('keyname' => $id, 'count' => 1, 'ipaddress' => $ipaddr, 'register_datetime' => $nowdate)); 161 } 162 echo $bf_click_counter[$id]; 163 die(); 164} 165add_action( 'wp_ajax_bf_click_counter_countup', 'bf_click_counter_countup' ); 166add_action( 'wp_ajax_nopriv_bf_click_counter_countup', 'bf_click_counter_countup' );
試したこと
いじった所で言うと
最初に普通に保存したらプラグインが認識されなかったので
文字コードUTF-8で保存したら認識されました。
回答3件
あなたの回答
tips
プレビュー