質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.76%

【初投稿】外部サイトにて作成されたWordpressプラグインの導入に関して

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 415

poteton

score 13

外部サイトにて作成されたWordpressプラグインの導入に関して

初めて投稿させていただきます、よろしくお願いします。
私はWordpress(バージョンは最新版)にてブログを投稿しています。
自由にカスタマイズが出来るいいねボタンを探して色々と調べて、やっと求めていたいいねボタンのサイトにたどり着きました。

こちらのFISH&BREADさんのサイトが作成したBF Click Counterというプラグインです。

ただ、Wordpress上のプラグインに公開していないという事でコードだけサイトに公開されていました。
サイトの設置方法を見ながら有効化させる所までは出来たのですが、使い方のショートコードを記述しても私のサイトに反映されず、ショートコードのまま反映されてました。
記述したショートコード→[bfcc id="test"]てすと[/bfcc]

私はプラグイン・PHPに関して全くの無知です。
原因が分かる方がおりましたら教えていただけますでしょうか。

発生している問題

ショートコードを記述してもいいねボタンが反映されない。

該当のソースコード

<?php
/*
Plugin Name: BF Click Counter
Author: Taichi MARUYAMA
Plugin URI: http://maruyama.breadfish.jp/
Description: シンプルなクリックカウンターです。
Version: 0.11
Author URI: http://maruyama.breadfish.jp/
Text Domain: bf-click-counter
*/

global $wpdb;
global $bf_click_counter;        // IDをキーにしてカウント数を格納
global $bf_click_ip;            // IDをキーにしてIPアドレスを格納

/**
 * DBで使うテーブル名を返す
 * 
 * @access public
 * @return void
 */
function bf_click_counter_get_table_name() {

    global $wpdb;
    return $wpdb->prefix . "bf_click_counter";

}

/**
 * アクティベーション。テーブルの作成を行う。
 * 
 * @access public
 * @return void
 */
function bf_click_counter_activation() {

    global $wpdb;
    $charset_collate = $wpdb->get_charset_collate();
    $table_name = bf_click_counter_get_table_name();    

    $sql = "CREATE TABLE $table_name (
      id mediumint(9) NOT NULL AUTO_INCREMENT,
      keyname text NOT NULL,
      count int NOT NULL,
      ipaddress text NOT NULL,
      register_datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
      update_datetime datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
      UNIQUE KEY id (id)
    ) $charset_collate;";

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

}

register_activation_hook(__FILE__, 'bf_click_counter_activation');

/**
 * ロード時に変数を初期化する.
 * 
 * @access public
 * @return void
 */
function bf_click_counter_initialize() {
    global $wpdb, $bf_click_counter, $bf_click_ip;
    $bf_click_counter = array();
    $table_name = bf_click_counter_get_table_name();    

    $results = $wpdb->get_results("SELECT * FROM $table_name");
    foreach($results as $one) {
        $bf_click_counter[$one->keyname] = $one->count;
        $bf_click_ip[$one->keyname] = $one->ipaddress;
    }
}
add_action('init', 'bf_click_counter_initialize');

/**
 * ショートコードの処理。ボタン(カウント数)を表示する
 * 
 * @access public
 * @param mixed $atts
 * @return void
 */
function bf_click_counter_display($atts) {
    global $bf_click_counter;

    extract(shortcode_atts(array(
        'id' => '0',
    ), $atts));

    // カウンターがすでにある場合
    if (array_key_exists($id, $bf_click_counter)) {
        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>';
    }

    // カウンターがない場合はカウント数ゼロでボタンを表示
    return '<a href="javascript:void(0);" class="btn btn-default bf-click-counter" data-id="' . $id . '">いいね(<span class="count">0</span>)</a>';
}
add_shortcode('bfcc', 'bf_click_counter_display');

/**
 * JavaScript(Ajax)の出力(いいねボタンの押下を受け付ける)
 * 
 * @access public
 * @return void
 */
function bf_click_counter_ajax() {
?>
    <script>
        var bf_ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';

        jQuery(function() {
            jQuery('.bf-click-counter').click(function() {
                var self = this;
                jQuery.ajax({
                    type: 'POST',
                    url: bf_ajaxurl,
                    data: {
                        'id' : jQuery(this).attr('data-id'),
                        'action' : 'bf_click_counter_countup',
                    },
                    success: function( response ){
                         jQuery(self).find('.count').html(response);   
                    }
                });                

                return false;
            });
        })

    </script>
<?php
}
add_action( 'wp_head', 'bf_click_counter_ajax');

/**
 * Ajaxの受付処理
 * 
 * @access public
 * @return void
 */
function bf_click_counter_countup(){
    bf_click_counter_initialize();
    global $wpdb, $bf_click_counter, $bf_click_ip;
    $id = $_POST['id'];
    $ipaddr = $_SERVER["REMOTE_ADDR"];
    $nowdate = date('Y-m-d h:m:s');    // 登録日付

    // カウンターがすでにある場合、インクリメントしてDBをアップデート
    if (array_key_exists($id, $bf_click_counter)) {
        // 同じIPからの連続いいねは阻止
        if ($bf_click_ip[$id] != $ipaddr) {
            $bf_click_counter[$id]++;
            $wpdb->update(bf_click_counter_get_table_name(), array('count' => $bf_click_counter[$id], 'ipaddress' => $ipaddr, 'update_datetime' => $nowdate), array('keyname' => $id));
        }

    // カウンターがない場合、DBにインサート
    } else {
        $bf_click_counter[$id] = 1;        // 初期値は1
        $wpdb->insert(bf_click_counter_get_table_name(), array('keyname' => $id, 'count' => 1, 'ipaddress' => $ipaddr, 'register_datetime' => $nowdate));
    }
    echo $bf_click_counter[$id];
    die();
}
add_action( 'wp_ajax_bf_click_counter_countup', 'bf_click_counter_countup' );
add_action( 'wp_ajax_nopriv_bf_click_counter_countup', 'bf_click_counter_countup' );

試したこと

いじった所で言うと
最初に普通に保存したらプラグインが認識されなかったので
文字コードUTF-8で保存したら認識されました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • dit.

    2019/03/01 13:56

    `[`が全角になっていないか確認してください

    キャンセル

  • poteton

    2019/03/01 14:52

    あっ・・・・全角になっていました^^;
    半角にしたら正常に反映されました!
    道理で反映されないわけですね・・・
    サイトから直接コピペしたのがいけなかったんですね
    ありがとうございます!!

    キャンセル

回答 3

+1

3分でわかる!WordPressでプラグインをインストールする2つの方法 | FREE SWORDER

WordPress非公式のプラグインをインストールする方法
をどうぞ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/01 13:00

    回答ありがとうございます。
    ですが、質問本文にある通りプラグインの有効化までは出来ているので他の原因が分かれば教えていただきたいです。

    キャンセル

  • 2019/03/01 14:53

    解決しました、ありがとうございました!

    キャンセル

check解決した方法

0

ショートコードの[]が半角ではなく、全角になっている初歩的なミスでした。
回答していただいた方、ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

ショートコードの[]が半角ではなく、全角になっている初歩的なミスでした。
回答していただいた方、ありがとうございました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る