我是如何实现它的:
add_action( \'delete_post\', array( \'MyClassName\', \'delete\' ) );
在delete函数中,我使用$wpdb->insert命令查看函数是否被调用。但是我看到$wpdb->insert命令被调用了两次(在我的表中插入两行)。你知道为什么会发生这样的事情吗?
我还尝试使用before\\u delete\\u post挂钩,因为这对我来说并没有什么影响,但我得到了相同的结果。
编辑:
似乎出于某种原因,为wp\\u posts表中的每个条目调用了delete函数。因此,如果帖子有3个修订,删除功能将被调用4次(原始帖子+3个修订)。这真是奇怪的行为。
最合适的回答,由SO网友:Alternatex 整理而成
我找到了解决办法。
您钩住delete\\u post(或任何其他类似钩子)的函数会根据需要执行多次。考虑到delete\\u post需要删除post及其所有修订,它将始终运行多次。为了避免每次WordPress从数据库中删除记录时都执行函数,您可以使用did\\U操作($hook)。此函数返回钩子执行的次数。考虑到这一点,我们可以通过将此条件放入函数中来解决多次执行问题:
if (did_action(\'delete_post\') === 1)
{
// execute code here
}