mysql - Wordpress 插件在首页触发两次,但在管理员触发一次
问题描述
我正在开发一个插件来计算用户访问并保存 IP、日期和访问次数。在 DB 中有 id(big int)、IP(str)、visits(int) 和 date(DATE)。我在插件主文件中的代码是这样的:
if (is_admin()){
include WPS_INC . 'back-end.php';
}else{
include WPS_INC . 'front-end.php';
do_action('wps_update_db');
}
front-end.php 中的代码
function wps_user_visits_count(){
global $wpdb;
$tp = $wpdb->prefix;
$today = date('Y-m-d');
$ip = intval($_SERVER['SERVER_ADDR']);
$is_user_visited_site_today = $wpdb->get_var("SELECT `id`
FROM `{$tp}wps_user_visits`
WHERE `date` = '{$today}' AND `ip` = {$ip}");
if (empty($is_user_visited_site_today)){
$wpdb->insert($tp . 'wps_user_visits',
array(
'ip' => $ip,
'date' => $today
),
array(
'%d','%s'
));
}else{
$wpdb->query("UPDATE `{$tp}wps_user_visits`
SET `visits` = `visits` + 1
WHERE `id` = {$is_user_visited_site_today}");
}
}
add_action('wps_update_db','wps_user_visits_count');
它将在 DB 中添加 2 次访问而不是 1 次。例如,在这一行SET `visits` = `visits` + 1
中,如果我将 1 更改为 3,它将添加 6 次访问而不是 3。
我怎么解决这个问题?
我也用$wpdb->update
. 不用找了。
解决方案
问题不在于代码。
问题出在Wampserver 上。
因此,如果您使用 wampserver,请备份您的数据库和 www 文件夹,然后使用 REVO UNINSTALLER 删除 wampserver。使用此程序进行卸载非常重要。
第一步卸载后,您应该使用 Revo 卸载程序删除所有剩余文件。
之后,您可以轻松安装 wampserver,一切顺利。
我应该说我也在使用虚拟主机。因此,如果您使用它,我的回答可能会对您有所帮助。
如果您正在使用其他本地主机程序,例如 XAMP 和 Laragon,请尝试此解决方案。
推荐阅读
- eclipse - 安装胶子插件eclipse
- python - python xlsxwriter时间戳字体不正确
- java - 编译器在 Collectors toMap 中给出一般错误
- java - 如何正确使用 setOnClickListerner?
- flutter - 无法通过从 API 获取数据来获取 id
- ios - 视图唤醒时 UIView.animate() 冻结
- lighttpd - Dokuwiki + Lighttpd - Lighttpd 无法启动,未找到包含文件
- reactjs - 状态正在改变,但数据表未显示新数据
- php - 我有一个安装集,我想设置它,但它在图像下方给出错误(Commmon.php 中的错误)
- google-colaboratory - 无法在 Google Colab 中建立连接