通过检查date
列:
要仅检查新评论、新帖子等,您可以创建cron作业(&H);然后检查
comment_date
,
post_date
等,以确定这些表中是否出现任何新的内容。保存cron作业中最后检查的时间戳,以便
date
大于上次检查的时间戳的是新插入。
使用WordPress API过滤器/操作挂钩:
WordPress在更改数据库之前/之后触发一些过滤器/操作挂钩。
通常会触发动作挂钩after 数据库操作已完成。这些挂钩通常具有名称前缀/后缀,如added/update/updated/deleted/save/insert
不幸的是,WordPress挂钩的命名不一致,否则会容易得多。
例如,comment API在数据库更改后激发以下操作挂钩:
wp_insert_comment
: 在将注释插入数据库后激发deleted_comment
: 从数据库中删除注释后激发trashed_comment
: 将注释移动到垃圾箱后激发untrashed_comment
: 将注释移出垃圾箱后激发spammed_comment
: 在注释标记为垃圾邮件后激发unspammed_comment
: 在注释(以前标记为垃圾邮件)未标记为垃圾邮件后激发edit_comment
: 更新/编辑注释后激发comment_closed
: 在帖子标记为不允许评论后激发
带有动作挂钩的示例代码:
add_action( \'wp_insert_comment\', \'wpse_comment_inserted\' );
function wpse_comment_inserted( $comment_id, $comment_object, 99, 2 ) {
// comment with id $comment_id is inserted into the database,
// do something with it here
}
还有很多其他的
filter hooks 和
action hooks 在数据库更改之前/之后运行的。根据需要使用它们。
使用这些挂钩的好处是,因为它们是WordPress核心的一部分,所以您不必担心内部更改。然而,缺点是,可能有一些插件/主题不使用这些核心API,而是运行其自定义构造的查询。因此,您将无法从这些数据库中捕获DB更改。
通过使用query
过滤器挂钩:
还可以跟踪通过WordPress进行的插入/更新/删除查询
$wpdb
API。任何使用WordPress数据库API的数据库查询都使用
$wpdb
(例如
wpdb
类)。所有查询(包括插入、更新和删除)都会触发
query
filter hook. 因此,使用这个钩子,您可以在执行之前过滤所有查询。
但是,如果任何主题/插件在WordPress之外进行自定义DB查询,则无法正常工作$wpdb
API,或者在加载插件之前运行任何核心查询,或者任何外部应用程序通过自定义SQL查询进行更改。
通过扩展wpdb
类:
此外,还可以创建
db.php
file, in the wp-content
目录(或在中创建软链接
wp-content
并扩展
wpdb
从那里开始上课。通过这种方式,您可以增强
wpdb
从那里初始化并跟踪插入/更新/删除查询。
通过使用数据库触发器:
然而,要通过任何SQL查询跟踪任何数据库更改,唯一可靠和完整的方法是创建
triggers 插件激活后,通过触发器跟踪数据库更改。不过,要从插件执行此操作,您用于WordPress的数据库凭据必须具有创建/删除触发器权限。
Caution: 触发器太多可能会减慢DB查询的速度。此外,确保在插件停用时清除触发器。