删除当前作者前台用户,同时删除自定义帖子类型

时间:2016-09-20 作者:Vishal Tanna

我使用工具集创建了自定义帖子类型。我想在删除帖子时删除当前帖子作者(前端用户)。

我尝试了以下代码:

add_action(\'before_delete_post\', \'my_deleted_post\');
function my_deleted_post($post_id){
    global $post; 
    if ($post->post_type == "agency") {
        //echo $post->post_author;exit;
        require_once(ABSPATH.\'wp-admin/includes/user.php\' );
        wp_delete_user( intval($post->post_author) );
    }
}
但这对我不起作用,有人能帮我吗?

1 个回复
最合适的回答,由SO网友:Andy Macaulay-Brook 整理而成

我不认为$post 将定义您在何处使用它。请尝试依赖传递给函数的post ID:

add_action(\'before_delete_post\', \'my_deleted_post\');

function my_deleted_post($post_id){ 
    if ( "agency" == get_post_type( $post_id ) ) {
        require_once(ABSPATH.\'wp-admin/includes/user.php\' );
        wp_delete_user( intval( get_post_field( \'post_author\', $post_id ) ) );
    }
}
请注意wp_delete_user() 将尝试删除同一用户拥有的任何其他帖子,任何帖子类型,这可能会导致无限递归循环。使用第三个参数wp_delete_user 重新分配其他职位可能是个好主意。或者在尝试删除用户之前,只需从挂钩中删除您的函数:

add_action(\'before_delete_post\', \'my_deleted_post\');

function my_deleted_post($post_id){ 
    if ( "agency" == get_post_type( $post_id ) ) {
        remove_action(\'before_delete_post\', \'my_deleted_post\');
        // break unwanted recursion
        require_once(ABSPATH.\'wp-admin/includes/user.php\' );
        wp_delete_user( intval( get_post_field( \'post_author\', $post_id ) ) );
    }
}

相关推荐

如何从USERS-edit.php中删除颜色选择器代码

我知道我不应该改变Wordpress的核心。但如果我想在“用户编辑”中使用仪表板用户配置文件页面。php和删除大块代码(如颜色选择器)的方法。从第259行到第336行-我想全部删除。<?php if ( ! ( IS_PROFILE_PAGE && ! $user_can_edit ) ) : ?> <tr class="user-rich-editing-wrap"> <th scope="