2016-12-16 2 views
0

Я разработал небольшое приложение для Wordpress, в котором у него есть институты (пользователь wp), тренеры (пользователь wp), стажеры (пользователь wp), курсы (пользовательские сообщения) и уведомления (пользовательский пост). Все приложение работает нормально, но если я удалю институт, вся информация принадлежит этому институту, например, тренеры, стажеры, уведомления & также следует удалить. В то время как я создавал пользователя «института», я сохраняю всю связанную с ней информацию, такую ​​как имя, фамилия в таблице wordpress «wp_users» и «имя института» хранится как «пользовательская мета» с ключом «inistitute_name» в 'wp_usermeta' таблица, как показано ниже мой код:Как удалить всех пользователей и сообщений на основе '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); 

При создании тренер (или) практикантами, мой код, как показано ниже:

$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); 

При создании курсов мой код, как показано ниже:

$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); 

Предположим, если удалить институт abcd, тогда вся информация, подобная «тренер», «стажер», «курсы» & «уведомления», связанные с этим институтом, также должна быть удалена на основе поля user_meta. Можно ли удалить? (или) я сделал какую-либо ошибку? может ли кто-нибудь сказать мне, что я делаю неправильно?

ответ

0

Попробуйте этот код:

$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" 
} 

Я не проверял этот код, из формировать свой WP знания.

Обратите внимание, что перед тестированием этого кода выполните резервное копирование базы данных.

Смежные вопросы