计算用户点击 WordPress 中的按钮的次数
Count how many times a user clicked to a button in WordPress
我需要统计用户点击特定按钮的次数,例如:
<a id="download" href="#">Download</a>
此处的最佳做法是什么?我考虑创建一个全新的数据库 table 并在每次用户单击按钮时增加值。
function countClicks() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
//* Create the teams table
$table_name = $wpdb->prefix . 'count_clicks';
$sql = "CREATE TABLE $table_name (
click_id INTEGER NOT NULL AUTO_INCREMENT,
click_number INTEGER NOT NULL,
PRIMARY KEY (click_id)
) $charset_collate;";
dbDelta( $sql );
}
除了创建一个全新的 table,您有更好的解决方案吗?
顺便说一句:这是一个 WordPress 网站。
我会使用 Advanced Custom Fields 插件并为每个可下载文件创建一个自定义字段 - 然后使用 JavaScript 捕获点击,该点击通过 AJAX 发送一个调用来增加计数。
增加一个计数器并拥有它而不创建新的 table。您应该使用选项 API。这是核心更新安全。
首先,在您的主题脚本中包含以下内容,我假设您有本地主题脚本或插件 js 文件。你必须
jQuery(document).ready(function($){
$('a#download').click(function(e){
e.preventDefault();
$.ajax({
url: myajax.ajaxurl,
data: {
action: 'increment_counter',
},
type: 'POST',
})
.done(function(){
// go to the link they clicked
window.location = $(this).attr('href');
})
.fail(function(xhr){
console.log(xhr);
})
});
});
然后将以下内容添加到您的 functions.php 或您的插件中。
add_action('wp_ajax_increment_counter', 'my_increment_counter');
add_action('wp_ajax_nopriv_increment_counter', 'my_increment_counter');
function my_increment_counter(){
// Name of the option
$option_name = 'my_click_counter';
// Check if the option is set already
if ( get_option( $option_name ) !== false ) {
$new_value = intval(get_option($option_name)) + 1;
// The option already exists, so update it.
update_option( $option_name, $new_value );
} else {
// The option hasn't been created yet, so add it with $autoload set to 'no'.
$deprecated = null;
$autoload = 'no';
add_option( $option_name, 1 , $deprecated, $autoload );
}
}
所以每当你需要获取值而不递增它时,只需使用
get_option('my_click_counter')
我需要统计用户点击特定按钮的次数,例如:
<a id="download" href="#">Download</a>
此处的最佳做法是什么?我考虑创建一个全新的数据库 table 并在每次用户单击按钮时增加值。
function countClicks() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
//* Create the teams table
$table_name = $wpdb->prefix . 'count_clicks';
$sql = "CREATE TABLE $table_name (
click_id INTEGER NOT NULL AUTO_INCREMENT,
click_number INTEGER NOT NULL,
PRIMARY KEY (click_id)
) $charset_collate;";
dbDelta( $sql );
}
除了创建一个全新的 table,您有更好的解决方案吗? 顺便说一句:这是一个 WordPress 网站。
我会使用 Advanced Custom Fields 插件并为每个可下载文件创建一个自定义字段 - 然后使用 JavaScript 捕获点击,该点击通过 AJAX 发送一个调用来增加计数。
增加一个计数器并拥有它而不创建新的 table。您应该使用选项 API。这是核心更新安全。
首先,在您的主题脚本中包含以下内容,我假设您有本地主题脚本或插件 js 文件。你必须
jQuery(document).ready(function($){
$('a#download').click(function(e){
e.preventDefault();
$.ajax({
url: myajax.ajaxurl,
data: {
action: 'increment_counter',
},
type: 'POST',
})
.done(function(){
// go to the link they clicked
window.location = $(this).attr('href');
})
.fail(function(xhr){
console.log(xhr);
})
});
});
然后将以下内容添加到您的 functions.php 或您的插件中。
add_action('wp_ajax_increment_counter', 'my_increment_counter');
add_action('wp_ajax_nopriv_increment_counter', 'my_increment_counter');
function my_increment_counter(){
// Name of the option
$option_name = 'my_click_counter';
// Check if the option is set already
if ( get_option( $option_name ) !== false ) {
$new_value = intval(get_option($option_name)) + 1;
// The option already exists, so update it.
update_option( $option_name, $new_value );
} else {
// The option hasn't been created yet, so add it with $autoload set to 'no'.
$deprecated = null;
$autoload = 'no';
add_option( $option_name, 1 , $deprecated, $autoload );
}
}
所以每当你需要获取值而不递增它时,只需使用
get_option('my_click_counter')