2016-05-21 8 views
2

ユーザーが自分のWordpressウェブサイトに登録すると、次の機能を使用して "tips_username"という名前のポートフォリオカテゴリを作成しています。php - ユーザーを削除するときに特定のカテゴリを削除する

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

なぜこれを使用しないでください。 '<?php wp_delete_category($ cat_ID)?>' ソース:https://codex.wordpress.org/Function_Reference/wp_delete_category – JazZ

+0

アドリゼンに感謝します!私は 'wp_delete_category($ cat_ID)'を使用しようとしましたが、それでも動作しません。変数 '$ tip_cat_name'を' echo 'しようとしましたが、コードの最初の部分に何か間違っているはずです。 –

+0

あなたは$ user_idをチェックしましたか?それらをエコーすることで、あなたはそれを得ることができないと思います。 –

答えて

0

引数が設定されていないと思われます(user_id)。関数にuser_idの値を渡すには、関数do_action()を呼び出す必要があります。

ソース:あなたのテンプレート(例えばdelete.php)でdo_action()関数を呼び出す必要がありdo_action()

EDIT 。 $のUSER_IDを削除するIDです

do_action('delete_traveltip_category_with_user', $user_id)

。テンプレートからカスタム関数を呼び出します。 お手伝いをしてください。

+1

get_current_user()これは現在ログインしているユーザーを返しますが、ここではユーザーが削除されているため、ここでは役に立ちません。 –

+0

右現在のユーザーは設定されていません。 'do_action'関数を使って削除しようとしているユーザを抽出する方法を正確に教えてください。 'do_action(get_userdata($ user_id));'と書くべきですか? –

関連する問題