删除wordpress用户后如何删除分类术语?

时间:2018-07-31 13:31:36

标签: wordpress

删除用户后,我需要删除wp_terms-> name字段。

我的要求是admin需要将帖子分配给特定用户,即admin需要将帖子添加到user1,但是user2不应看到该帖子。为此,我创建了一个自定义帖子并为此添加分类法。用户用户名.so我需要在分类法中列出用户的用户名作为术语。注册新用户时,他的用户名也应在wp_terms表中更新,因此我将获得用户名作为术语。效果很好,现在我需要在删除用户后从分类法中删除该术语。

我停留在这里。请为此提供一些解决方案

我所做的是

add_action( 'delete_user', 'yg_user_delete', 10, 1 );

function yg_user_delete( $user_id ) {

$user_info = get_userdata($user_id); $user_name = $user_info->user_login;
print_r($user_info);


wp_delete_term( $user_name, 'user1', array() );

}

2 个答案:

答案 0 :(得分:0)

您的代码存在一些问题。 主要问题是wp_delete_term需要term_id而不是term_name。 您可以使用wp_get_object_terms为用户获取term_id

我尚未测试此代码,但它应该为您指明正确的方向。

function delete_user_terms( $user_id ) {
    $taxonomy = 'user1'; // Change this.

    $terms = wp_get_object_terms( $user_id, $taxonomy ); // Get the terms for this user.
    if ( is_wp_error( $terms ) ) {
        return; // Taxonomy does not exist.
    }

    foreach ( $terms as $term ) {
        wp_delete_term( $term->term_id, $taxonomy ); // This requires Term ID. Not term name.
    }
}
add_action( 'delete_user', 'delete_user_terms', 10, 1 );

答案 1 :(得分:0)

我找到了解决方法

add_action( 'delete_user', 'yg_user_delete', 10, 1 );

function yg_user_delete( $user_id ) {

$user_info = get_userdata($user_id); 
$user_name = $user_info->user_login;

wp_delete_term( get_term_by('name', $user_name, 'user1')->term_id, 'user1',    array() );

}