удаление пользовательского аватара

Привет, я внедрил пользовательскую загрузку аватаров из front-end в моей теме WordPress. Это работает. Пользователь может добавлять и удалять аватар customa. Моя проблема заключается в том, когда пользователь выбирает свой собственный аватар, он удаляет его из метафайла аватара, но загруженные файлы изображений аватаров остаются на сервере. То, что я хочу сделать, также принудительно удаляет файлы изображений аватара с сервера. Это шаблон user_profile.php;

<?php global $current_user, $wp_roles; get_currentuserinfo(); ?> <div class="entry-content entry"> <?php the_content(); if ( isset($_REQUEST['error']) && $_REQUEST['error'] == 'true' ){ $error = __('The passwords you entered do not match. Your password was not updated.', 'cosmotheme'); }elseif( isset($_REQUEST['success']) && $_REQUEST['success'] == 'true' ){ $success = __('Your profile info was updated.', 'cosmotheme'); } if ( $error ) echo '<p class="error">' . $error . '</p>'; if ( isset($success) ) echo '<p class="success">' . $success . '</p>'; ?> <?php if ( !is_user_logged_in() ) : ?> <p class="warning"> <?php _e('You must be logged in to edit your profile.', 'cosmotheme'); ?> </p><!-- .warning --> <?php else : ?> <?php ?> <form method="post" id="adduser" action="<?php the_permalink(); ?>"> <div class="tabs-container form-profile-pic"> <?php $action['group'] = 'avatar'; $action['topic'] = 'upload'; $action['index'] = ''; $action['upload_url'] = home_url().'/wp-admin/media-upload.php?post_id=-1&amp;type=image&amp;TB_iframe=true'; $custom_avatar_url = ''; $custom_avatar_meta = get_user_meta($current_user->id, 'custom_avatar', true); if(is_numeric($custom_avatar_meta) && $custom_avatar_meta > 0){ $custom_avatar_url = wp_get_attachment_url($custom_avatar_meta); } ?> <label for="profile-pic"><?php _e('Profile picture', 'cosmotheme'); ?></label> <p class="button"><input type="button" class="button-primary front_post_input" id="upload_btn" value="<?php _e('Choose file','cosmotheme'); ?>" <?php echo fields::action( $action , 'extern-upload-id' ) ?> /></p> <input type="text" name="image" value="<?php echo $custom_avatar_url; ?>" class="generic-record front_post_input" id="avatar_upload" onclick="jQuery('#upload_btn').click();" /> <label class="remove-avatar" for="remove_avatar"><input type="checkbox" name="remove_avatar" <?php echo $disabled ?> value="1" id="remove_avatar"> <?php _e('Remove avatar', 'cosmotheme'); ?></label> <input type="hidden" name="avatar_id" id="avatar_upload_id" value="<?php echo $custom_avatar_meta; ?>" class="generic-record generic-single-record " /> </div><!-- .profile pic --> <div class="tabs-container form-username"> <label for="user-name"><?php _e('Username', 'cosmotheme'); ?></label> <input class="text-input" name="user-name" type="text" id="user-name" disabled value="<?php the_author_meta( 'user_login', $current_user->id ); ?>" /> </div><!-- .form-username --> <div class="tabs-container form-username"> <label for="first-name"><?php _e('First name', 'cosmotheme'); ?></label> <input class="text-input" name="first-name" type="text" id="first-name" <?php echo $disabled ?> value="<?php the_author_meta( 'user_firstname', $current_user->id ); ?>" /> </div><!-- .form-username --> <div class="tabs-container form-username"> <label for="last-name"><?php _e('Last name', 'cosmotheme'); ?></label> <input class="text-input" name="last-name" type="text" id="last-name" <?php echo $disabled ?> value="<?php the_author_meta( 'user_lastname', $current_user->id ); ?>" /> </div><!-- .form-username --> <div class="tabs-container form-email"> <label for="email"><?php _e('E-mail *', 'cosmotheme'); ?></label> <input class="text-input" name="email" type="text" id="email" <?php echo $disabled ?> value="<?php the_author_meta( 'user_email', $current_user->id ); ?>" /> </div><!-- .form-email --> <div class="tabs-container form-url"> <label for="url"><?php _e('Website', 'cosmotheme'); ?></label> <input class="text-input" name="url" type="text" id="url" <?php echo $disabled ?> value="<?php the_author_meta( 'user_url', $current_user->id ); ?>" /> </div><!-- .form-url --> <div class="tabs-container form-password"> <label for="pass1"><?php _e('Password *', 'cosmotheme'); ?> </label> <input class="text-input" name="pass1" <?php echo $disabled ?> type="password" id="pass1" /> </div><!-- .form-password --> <div class="tabs-container form-password"> <label for="pass2"><?php _e('Repeat password *', 'cosmotheme'); ?></label> <input class="text-input" name="pass2" <?php echo $disabled ?> type="password" id="pass2" /> </div><!-- .form-password --> <div class="tabs-container form-textarea"> <label for="description"><?php _e('Biographical information', 'cosmotheme') ?></label> <textarea name="description" id="description" <?php echo $disabled ?> rows="3" cols="50"><?php the_author_meta( 'description', $current_user->id ); ?></textarea> </div><!-- .form-textarea --> <p class="form-submit"> <?php //echo $referer; ?> <input name="updateuser" type="submit" id="updateuser" <?php echo $disabled ?> class="submit button" value="<?php _e('Update', 'cosmotheme'); ?>" /> <?php wp_nonce_field( 'update-user' ) ?> <input name="action" type="hidden" id="action" <?php echo $disabled ?> value="update-user" /> </p><!-- .form-submit --> </form><!-- #adduser --> <?php endif; ?> </div><!-- .entry-content --> 

И это user_profile_update.php;

 <?php /* Get user info. */ global $current_user, $wp_roles; get_currentuserinfo(); /* Load the registration file. */ //require_once( ABSPATH . WPINC . '/registration.php' ); /* If profile was saved, update profile. */ if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' && ( !defined('IS_FOR_DEMO' ) || get_the_author_meta( 'user_login', $current_user->id ) != 'demo') ) { /* Update user password. */ if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) { if ( $_POST['pass1'] == $_POST['pass2'] ){ wp_update_user( array( 'ID' => $current_user->id, 'user_pass' => esc_attr( $_POST['pass1'] ) ) ); }else{ $error = __('The passwords you entered do not match. Your password was not updated.', 'cosmotheme'); } } /* Update user information. */ if ( !empty( $_POST['url'] ) ) update_user_meta( $current_user->id, 'user_url', esc_url( $_POST['url'] ) ); if ( !empty( $_POST['email'] ) ) update_user_meta( $current_user->id, 'user_email', esc_attr( $_POST['email'] ) ); if ( !empty( $_POST['first-name'] ) ) { update_user_meta( $current_user->id, 'first_name', esc_attr( $_POST['first-name'] ) ); } if ( !empty( $_POST['last-name'] ) ) update_user_meta($current_user->id, 'last_name', esc_attr( $_POST['last-name'] ) ); if ( !empty( $_POST['description'] ) ) update_user_meta( $current_user->id, 'description', esc_attr( $_POST['description'] ) ); if ( !empty( $_POST['avatar_id'] ) && $_POST['avatar_id'] != get_user_meta($current_user->id, 'custom_avatar', true) && empty( $_POST['remove_avatar'])){ update_user_meta( $current_user->id, 'custom_avatar', esc_attr( $_POST['avatar_id'] ) ); }elseif( !empty( $_POST['remove_avatar']) && $_POST['remove_avatar'] == 1){ update_user_meta( $current_user->id, 'custom_avatar', '-1' ); } /* Redirect so the page will show updated info. */ // if ( !$error ) { $redirect_url = get_permalink(); if(isset($error) && $error != ''){ $msg = array( 'error' => "true" ); }else{ $msg = array( 'success' => "true" ); } $_url = add_query_arg( $msg , $redirect_url ); wp_redirect( $_url ); exit; // } } ?> 

Как вы можете видеть, проверяет ли пользователь ввод «удалить аватар», я обновляю метаданные custom_avatar, что делает его невидимым для показа. Это работает, но, как я уже сказал, мне также необходимо принудительно удалить файл изображения с сервера. Вы можете мне помочь? Благодарю.

Solutions Collecting From Web of "удаление пользовательского аватара"

Вам просто нужно написать функцию удаления аватара, которая получает местоположение файла и удаляет его с помощью функции разблокировки php.

В качестве примера того, как это делается, можно использовать следующий код. Я использую это, чтобы удалить старые пользовательские аватары, когда пользователь загружает новый. Он также используется для замены аватаров по умолчанию, которые когда-то были сохранены в пользовательском каталоге из старого плагина, который больше не используется.

 function avatar_delete( $user_id ) { $old_avatars = get_user_meta( $user_id, 'author_avatar', true ); $auth = get_the_author_meta( 'user_login', $user_id ); $wp_content = WP_CONTENT_DIR; $filename = $wp_content . '/images/authors/' . $auth . '.jpg'; if ( file_exists( $filename ) ) { unlink( $filename ); } else { $upload_path = wp_upload_dir(); if ( is_array( $old_avatars ) ) { foreach ( $old_avatars as $old_avatar ) { $old_avatar_path=str_replace( $upload_path[ 'baseurl' ], $upload_path[ 'basedir' ], $old_avatar ); @unlink( $old_avatar_path ); } } } delete_user_meta( $user_id, 'author_avatar' ); }