My heading is awesome
My heading is awesome
いいねボタン
0
いいねボタン
[bfcc id=”christmas_day”]
counter_shortcode($atts) {
global $bf_click_counter, $bf_click_ip;
extract(shortcode_atts(array(
‘id’ => ‘default’,
‘text’ => ”,
‘class’ => ‘bf-click-counter’
), $atts));
$button_text = $text;
$button_class = $class;
// カウント数、IPアドレスの取得
$count = isset($bf_click_counter[$id]) ? $bf_click_counter[$id] : 0;
$ipaddress = isset($bf_click_ip[$id]) ? $bf_click_ip[$id] : ”;
// IPアドレスが一致している場合はカウントしない
if($_SERVER[‘REMOTE_ADDR’] == $ipaddress) {
$count–;
// カウンターをデータベース更新
bf_click_counter_update_count($id, $count);
}
// ボタン表示
$output = ‘ ‘;
$output .= ‘
‘;
$output .= ‘ ‘;
return $output;
}
add_shortcode(‘bf-click-counter’, ‘bf_click_counter_shortcode’);
/**
* クリック時の処理。カウントを更新する。
*
* @access public
* @return void
*/
function bf_click_counter_update_count_ajax() {
global $wpdb;
$id = $_POST[‘id’]; // ボタンのID
// カウント数、IPアドレスの取得
$table_name = bf_click_counter_get_table_name();
$results = $wpdb->get_results(“SELECT * FROM $table_name WHERE keyname = ‘$id'”);
if(empty($results)) {
$count = 0;
$ipaddress = ”;
// 新しいレコードを追加
$wpdb->insert(
$table_name,
array(
‘keyname’ => $id,
‘count’ => $count + 1,
‘ipaddress’ => $_SERVER[‘REMOTE_ADDR’],
‘register_datetime’ => current_time(‘mysql’),
‘update_datetime’ => current_time(‘mysql’)
),
array(
‘%s’,
‘%d’,
‘%s’,
‘%s’,
‘%s’
)
);
} else {
// レコードが存在する場合はカウント数を更新
$count = $results[0]->count;
$ipaddress = $results[0]->ipaddress;
// IPアドレスが一致していない場合はカウント更新
if($_SERVER[‘REMOTE_ADDR’] != $ipaddress) {
$wpdb->update(
$table_name,
array(
‘count’ => $count + 1,
‘ipaddress’ => $_SERVER[‘REMOTE_ADDR’],
‘update_datetime’ => current_time(‘mysql’)
),
array(‘keyname’ => $id),
array(
‘%d’,
‘%s’,
‘%s’
),
array(‘%s’)
);
}
}
$count++;
// カウントを返す
echo $count;
exit;
}
add_action(‘wp_ajax_bf-click-counter-update-count’, ‘bf_click_counter_update_count_ajax’);
add_action(‘wp_ajax_nopriv_bf-click-counter-update-count’, ‘bf_click_counter_update_count_ajax’);
/**
* カウント数を更新する
*
* @param mixed $id
* @param mixed $count
* @return void
*/
function bf_click_counter_update_count($id, $count) {
global $wpdb;
$table_name = bf_click_counter_get_table_name();
$wpdb->update(
$table_name,
array(
‘count’ => $count,
‘update_datetime’ => current_time(‘mysql’)
),
array(‘keyname’ => $id),
array(
‘%d’,
‘%s’
),
array(‘%s’)
);
}
?>
[bfcc id=”001″]