DELETE_POST挂钩-删除多个项目

时间:2013-04-12 作者:user31412

我正在使用delete_post

add_action(\'delete_post\', array($this, \'remove_audio_file\')); // delete post event
(在类内使用)。

当我删除一篇文章时,检索它的ID没有问题。

global $post;
但是,当我删除多篇帖子时(2篇或更多)$post 成为NULL.你能告诉我为什么我做错了吗?

编辑:

function remove_audio_file() {
        global $post;
        if ($post != NULL) {
           $unique_id = get_post_meta($post->ID, \'ecpt_unique_id\', true);
            $username = get_userdata($post->post_author)->user_login;
            $uploadrr = new bt_uploader();
            $dirPath = $uploadrr->audio_folder() . $username . \'/\' . $unique_id;
            if (is_dir($dirPath)) {
                foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dirPath, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST) as $path) {
                    $path->isFile() ? unlink($path->getPathname()) : rmdir($path->getPathname());
                }
            } 
        }
    }

2 个回复
SO网友:Tom J Nowell

这不是钩子的用途:

do_action( \'delete_post\', int $postid, WP_Post $post )

https://developer.wordpress.org/reference/hooks/delete_post/

该操作将为您提供post ID和post对象。

所以不要访问$_GET 或全球$post 对象,而使用操作所提供的内容。

SO网友:user31412

删除多个项目时,$\\u GET[\'post\']将成为一个数组,其中数字键从0开始。要访问正在删除的当前项目,请使用global$post\\u del。这与global$post相同,因此所有方法和程序都将以相同的方式工作。这在WP Codex上没有记录。我自己通过调试找到了答案。

结束

相关推荐

WP_Query or get_posts?

使用“fields”=>“ids”参数时,在下面的代码中创建新的WP\\u查询是否比执行get\\u post更好?如果使用WP\\u查询,循环会是什么样子?function myplugin_delete_image_items( $postid ) { $args = array( \'post_type\' => \'myplugin_image_item\', \'cache_results\' =&g