删除用户时删除特定类别

时间:2016-05-19 作者:Claudio Sinopoli

当用户在我的网站上注册时,我使用以下函数创建一个名为“tips\\u username”的公文包类别。

add_action(\'user_register\', \'auto_create_traveltip_category\');
function auto_create_traveltip_category($user_id) {
    $tip_category_name = \'tips_\' . $_POST[\'user_login\'];
    wp_insert_term($tip_category_name, \'portfolio_entries\', array(
            \'description\' => \'Travel Tip for \' . $_POST[\'user_login\'],
            \'slug\'        => \'tips-\' . $_POST[\'user_login\'],
            \'parent\'      =>  \'\',
            )
    );
}
这很好,但现在我需要一个函数,以便在删除用户时自动删除类别,例如从用户列表中删除。我实现了以下函数https://codex.wordpress.org/Plugin_API/Action_Reference/delete_user:

function delete_traveltip_category_with_user($user_id) {
    global $wpdb;
    $user_obj = get_userdata($user_id);
    $tip_cat_name = \'tips_\' . $user_obj->user_login;
    $tip_cat_desc = get_term_by(\'name\', $tip_cat_name, \'portfolio_entries\');
    $tip_cat_id = $tip_cat_desc->term_id;
    wp_delete_term( $tip_cat_id, \'portfolio_entries\' );
}
add_action( \'delete_user\', \'delete_traveltip_category_with_user\' );
不幸的是,它不起作用。你能看一下并告诉我它怎么了吗?谢谢

1 个回复
SO网友:dan9vu

  1. delete_user 操作涉及两个参数:$id$reassign. 因此,应该为挂钩指定两个参数sanitize_term()sanitize_user() 使用不同的方法清理字符串,\'tips_\' . $_POST[\'user_login\']\'tips_\' . $user_obj->user_login 不总是相同的字符串。所以最好使用\'tips_\' . sanitize_user($_POST[\'user_login\') 作为插入术语时的术语名称