删除用户后,我需要删除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() );
}
答案 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() );
}