为什么尽管我做了所有的努力,SAVE_POST钩子还是被调用了两次?

时间:2021-09-15 作者:Brian

我明白这一点save_post 钩子可以根据自动保存、修订等情况多次开火。

考虑到这一点,我有一个save_post 挂钩设置为

add_action( \'save_post\', \'do_stuff\', 5000, 2 );
function do_stuff($post_id, $post) {
在函数开始时,我有

    if (isset($post->post_status) && \'auto-draft\' == $post->post_status) {
        return;
    }

    // Autosave, do nothing
    if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) {
        return;
    }
    // AJAX? Not used here
    if (defined(\'DOING_AJAX\') && DOING_AJAX) {
        return;
    }

    if( wp_is_post_revision( $post_id) || wp_is_post_autosave( $post_id ) ) return;
我想这可以确保一次成功。但是,当在后期编辑中点击Update时,我从一些日志中看到,我正在做的是,钩子被调用了两次。

也许这与我有一个自定义Gutenberg块插件来扩展核心块有关?在我的插件php文件中,除了加载插件的js之外,我没有其他内容。所以我不确定这个插件在这里会起什么作用。

无论如何,只是好奇我是否遗漏了一些明显的东西。。。

谢谢

1 个回复
SO网友:vancoder

save_post 根据我的经验,在古腾堡的领导下变得很笨拙。它至少触发两次,并且您进行的任何检查都不会区分实例。

我会考虑用wp_after_insert_post, 正是因为这个原因,它被引入了core。

相关推荐

OOP development and hooks

我目前正在为Wordpress编写我的第一个OOP插件。为了帮助我找到一点结构,a boiler plate 这为我奠定了基础。在里面Main.php 有一种方法可以为管理员加载JS和CSS资产:/** * Register all of the hooks related to the admin area functionality * of the plugin. * * @since 0.1.0 * @access private