frontend에 회원탈퇴 기능 넣기

안녕하세요. 예전에 테마만들기 책을 읽고 wp_query에 대해서 도움을 받았습니다. 만들고 싶은 사이트가 있어 몇달동안 공부와 구글링을 통해 아직도 헤매도 있네요.

다름이 아니라 회원탈퇴 기능에 대해 조언을 좀 얻을 수 있을까해서 글을 남깁니다.

 

 

frontend의 계정 페이지에 탈퇴 기능을 넣으려고 합니다.  user 가 탈퇴하기에 체크하고 submit 하면, 그걸 받아서 wp_delete_user(  )로 처리하려 합니다. wordpress codex에 나온 예제를 거의 그대로 쓰려하니 안되네요. 오류가 납니다..ㅠ

 

$_GET['myaccount'] == 'delete'

로 받아서 hook을 걸려고 하는데요.

아마도,

add_action( 'init', 'n_remove_user_account' );

이 제대로 안걸리는 것도 같네요. 그래서 이 hook과 fucntnion을  functions.php에 넣어도 안되네요.. ㅠ

조언을 구해도 될까요? 감사합니다.

 


<?php
/* Recheck if user is logged in just to be sure, this should have been done already */
if( !is_user_logged_in() ) {
	wp_redirect( home_url() );
	exit;
}

//delete user
if ( is_user_logged_in() && $_GET['myaccount'] == 'delete'  ) {

	add_action( 'init', 'n_remove_user_account' );
}

function n_remove_user_account() {
    // Verify that the user intended to take this action.

    
    require_once(ABSPATH.'wp-admin/includes/user.php' );
    $current_user = wp_get_current_user();
    wp_delete_user( $current_user->ID );

    wp_redirect( home_url() );
    exit;
}




if( $_SERVER['REQUEST_METHOD'] == 'POST' && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) {

	$current_user = wp_get_current_user();

	

    //탈퇴 내용 체크 확인
    $pass1 = $_POST['deletecheck'];
    if( empty($_POST['deletecheck']) ){
        wp_redirect( get_permalink() . '?validation=deletchecknone' );
        exit;
    } else if( $_POST['deletecheck'] == 'yes' ) {
        wp_redirect( get_permalink() . '?myaccount=delete' );
        exit;
    } else {
        wp_redirect( get_permalink() . '?validation=unknown' );
        exit;
    }



    /* We got here, assuming everything went OK */
    wp_redirect( get_permalink() . '?updated=true' );
	exit;

}
?>

<?php get_header(); ?>

<div class="n_page">

	<?php while (have_posts()) : the_post(); ?>


		<?php if( !empty( $_GET['validation'] ) ): ?>

			<?php if( $_GET['validation'] == 'deletchecknone' ): ?>
				<div class="error"><?php _e('<p class="n_login_msg">!! Please check to delete your account.</p>', 'mythmeme'); ?></div>
			<?php elseif( $_GET['validation'] == 'unknown' ): ?>
				<div class="error"><?php _e('<p class="n_login_msg">!! Unknown Error!</p>', 'mythmeme'); ?></div>
			<?php endif; ?>

		<?php endif; ?>

		<?php $current_user = wp_get_current_user(); ?>

		<form method="post" id="n_account_form" action="<?php the_permalink(); ?>">

			<p class="form-password">
				<label for="deletecheck"><?php _e('Delete My Account', 'mythmeme'); ?> </label>
				<input name="deletecheck" type="checkbox" id="deletecheck" class="checkbox" value="yes"  />
			</p>


			<p class="form-submit">
				<input name="updateuser" type="submit" id="n_wp_submit" class="submit button" value="<?php _e('Delete My Account', 'mythmeme'); ?>" />
				<?php wp_nonce_field( 'update-user3' ); ?>
				<input name="honey-name" value="" type="text" style="display:none;"></input>
				<input name="action" type="hidden" id="action" value="update-user" />
			</p><!-- .form-submit -->

		</form><!-- #n_account_form -->

	<?php endwhile; ?>

	<?php wp_reset_postdata(); ?>


</div>




<?php get_footer(); ?>
목록보기

해당 글에 2개의 댓글이 있습니다.

  1. 피터 댓글:

    우선 이 파일의 내용을 어떤 식으로 노출하시나요?
    파일 구조로 보아 페이지 템플릿으로 작성하여 페이지에서 지정해서?
    아님, 설마 index파일을?

    어떤 식으로 노출할 계획인지 알려주시기 바랍니다.

    • 장진영 댓글:

      page-slug.php 형식으로 노출될 겁니다.
      다행히, hook 쓸필요없이 wp_delete_user를 직접 쓰니 해결되었습니다.

      답변주셔서 감사합니다.

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다