WordPress delete_post挂钩调用函数两次

时间:2014-07-24 10:40:59

标签: wordpress wordpress-plugin

以下是我如何实施它:

add_action( 'delete_post', array( 'MyClassName', 'delete' ) );

在删除功能中,我使用$ wpdb-> insert命令查看函数是否被调用。但是我看到$ wpdb-> insert命令被调用两次(在我的表中插入两行)。关于为什么会这样的事情发生的任何想法?

我也尝试过使用before_delete_post钩子,因为它对我没有什么影响,但我得到了相同的结果。

编辑:

似乎为某些原因为wp_posts表中的每个条目调用了delete函数。因此,如果帖子有3个修订版,则删除函数将被调用4次(原始帖子+ 3个修订版)。这真是奇怪的行为。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

你挂钩到delete_post的函数(或者可能是任何其他类似的钩子)根据需要执行多次。考虑到delete_post需要删除帖子及其所有修订版本,它将始终运行多次。为了避免每次WordPress从数据库中删除记录时都执行函数,您可以使用did_action($ hook)。此函数返回钩子执行的次数。考虑到这一点,我们可以通过将这个条件放入我们的函数来解决我们的多次执行问题:

if (did_action('delete_post') === 1)
{
    // execute code here
}