我使用以下功能创建名为" tips_username"的投资组合类别。当用户在我的Wordpress网站上注册时。
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' );
不幸的是它不起作用。你能看一看并告诉我它有什么问题吗?谢谢!
答案 0 :(得分:0)
似乎没有设置user_id
参数。您必须调用do_action()
函数将user_id
值传递给您的函数。
来源:do_action()
修改强>
您必须在模板中调用do_action()
函数(例如delete.php)。
do_action('delete_traveltip_category_with_user', $user_id)
其中$ user_id是要删除的ID。它将从模板中调用您的自定义函数。 希望它有所帮助。