2016-12-16 2 views
0

Ich habe eine kleine Wordpress-Anwendung entwickelt, wo es Institute (wp Benutzer), Trainer (wp Benutzer), Auszubildende (wp Benutzer), Kurse (benutzerdefinierte Post) und Benachrichtigungen (benutzerdefinierte Post) hat. Alle Anwendung funktioniert gut, aber wenn ich ein Institut löschen alle Informationen gehört zu diesem Institut wie Trainer, Trainee, Benachrichtigungen & Kurse sollten auch gelöscht werden. Während ich den "Institut" -Benutzer erstelle, speichere ich alle zugehörigen Informationen wie Vorname, Nachname in der Wordpress-Tabelle 'wp_users' und 'Institutsname' speichert als 'Benutzermeta' mit Schlüssel 'inistitute_name' in 'wp_usermeta' Tabelle wie unten ist mein Code:Wie lösche ich alle Benutzer und Beiträge basierend auf 'user_meta'?

$user_data = array(
       'ID' => '', 
       'user_pass' => '', 
       'user_login' => $first_name, 
       'user_email' => $user_email, 
       'first_name' => $first_name, 
       'last_name' => $last_name, 
       'role' => 'admin'//get_option('default_option') 
      ); 
      $random_password = wp_generate_password(8,false); 
      $user_id = wp_insert_user($user_data); 
      update_user_meta($user_id, 'inistitute_name',$insititute_name); 

Beim Erstellen Trainer (oder) Praktikant mein Code wie unten:

$user_data = array(
        'ID' => '', 
        'user_pass' => '', 
        'user_login' => $first_name, 
        'user_email' => $trainer_email, 
        'first_name' => $first_name, 
        'last_name' => $last_name, 
        'role' => 'trainer' 
      ); 
      $random_password = wp_generate_password(8,false); 
      $user_id = wp_insert_user($user_data); 
      update_user_meta($user_id, 'inistitute_name',$this->institute_name[0]); 
      wp_set_password($random_password, $user_id); 

Während Kurse mein Code wie unten zu schaffen:

$user_ID = get_current_user_id(); 
$institute_name = get_user_meta($user_ID, 'inistitute_name', true); 
$post = array(
       'post_title' => $title, 
       'post_content' => $description, 
       'post_status' => 'publish', 
       'post_type' => "courses" 
      ); 
$id = wp_insert_post($post); 
update_post_meta($id, 'inistitute_name', $institute_name); 

Nehmen wir an, wenn ein Institut "abcd" gelöscht wird, dann sollten alle Informationen wie "Trainer", "Auszubildende", "Kurse" & "Benachrichtigungen", die mit diesem Institut verbunden sind, ebenfalls auf Basis eines 'user_meta'-Feldes gelöscht werden. Ist es möglich zu löschen? (oder) habe ich einen Fehler gemacht? Kann mir jemand sagen, was ich falsch gemacht habe?

Antwort

0

Versuchen Sie diesen Code:

$user_args = array(
    'meta_key' => 'inistitute_name', 
    'meta_value' => 'your_value', //<-- replace it by your user_meta value. 
    'meta_compare' => '=', 
    'orderby' => 'ID', 
    'number' => -1 
); 
// Custom query. 
$user_query = new WP_User_Query($user_args); 

// Get query results. 
$users = $user_query->get_results(); 

//print_r($users); 
// Check for users 
if (!empty($users)) 
{ 
    // Loop over users. 
    foreach ($users as $user) 
    { 
     $user_id = $user->ID; 
     // Get each user's data. 
     $user_info = get_userdata($user->ID); 

     $user_display_name = $user_info->display_name; 

     $args = array(
      'numberposts' => -1, 
      'post_type' => 'any', //<-- you can Specific type by array('post', 'my_custom_post') 
      'author' => $user_id 
     ); 

     // get all posts by this user: posts, pages, attachments, etc.. 
     $user_posts = get_posts($args); 

     if (!empty($user_posts)) 
     { 
      // delete all the user posts 
      foreach ($user_posts as $user_post) 
      { 
       wp_delete_post($user_post->ID, true); 
      } 
     } 
     wp_delete_user($user_id, $reassign); 
    } 
} 
else 
{ 
    //"no user found" 
} 

ich diesen Code nicht getestet haben, aus meinem WP Wissen bilden.

Bitte beachten Sie vor dem Testen dieses Codes eine Datenbanksicherung.

Verwandte Themen