WP-Members는 워드프레스에서 회원제 사이트를 운영하려는 경우에 사용할 수 있는 무료 멤버십 플러그인입니다. 워드프레스에는 기본적인 회원 가입 기능이 있지만 Ultimate Member나 WP-Members와 같은 멤버십 플러그인을 사용하여 정교한 회원제 사이트 운영이 가능합니다.
우커머스 회원제 사이트를 운영하려는 경우에는 YITH WOOCOMMERCE MEMBERSHIP과 같은 우커머스용 멤버십 플러그인을 사용할 수 있습니다.
워드프레스 WP-Members 플러그인 회원 탈퇴 기능 추가하기
WP-Members는 현재 80,000개가 넘는 사이트에 설치되어 사용되고 있으며, Ultimate Member는 이보다 많은 20만 개 이상의 사이트에서 사용되고 있습니다.
워드프레스 사이트에서 회원 가입이 불필요한 경우에는 회원 가입을 비활성화할 수 있습니다.
워드프레스에서는 회원 탈퇴 기능은 제공하지 않습니다. 회원들이 탈퇴할 수 있도록 하려는 경우 Delete Me와 같은 플러그인을 사용할 수 있습니다. 하지만 이 플러그인의 사용자가 많지 않아서 그런지 몰라도 현재 1년 이상 업데이트가 안 되고 있습니다. 이 때문에 최신 워드프레스 버전에서 잘 작동할지는 장담할 수 없습니다.
WP-Members 플러그인을 사용하는 경우에는 다음 코드를 추가하면 사용자들이 자신의 계정을 삭제하여 탈퇴하도록 허용할 수 있습니다.
/**
* User self delete script. 사용자가 자신 계정을 삭제하도록 하는 스크립트.
*
* This adds a "delete my account" link to the user profile links
* created with the [wpmem_profile] shortcode. The user selects and
* confirms to delete their account and is presented with a success
* message when the account is deleted.
* 이 코드를 사용하면 [wpmem_profile] 숏코드로 생성된 사용자 프로필 링크에 "delete my account" 링크를 추가합니다.
* 사용자가 자신의 계정을 선택하고 삭제를 확인하면 계정이 삭제되면서 성공 메시지가 표시됩니다.
*/
// Add below this line to functions.php
/**
* Checks to see if a user is self deleting and if so, after
* verifying the nonce and form post fields for validity,
* the user is deleted.
*/
add_action( 'wpmem_after_init', 'my_user_self_delete' );
function my_user_self_delete () {
// Verify that the user intended to take this action.
if ( isset( $_POST['self_delete'] ) && 'delete' == $_POST['self_delete'] ) {
$nonce = ( isset( $_REQUEST['_wpnonce'] ) ) ? $_REQUEST['_wpnonce'] : false;
if ( ! wp_verify_nonce( $nonce, 'wpmem_self_delete' ) ) {
return;
}
require_once( ABSPATH . 'wp-admin/includes/user.php' );
$current_user = wp_get_current_user();
$wpmem_self_delete = array(
'self_delete' => 'complete',
'username' => $current_user->user_login,
);
wp_delete_user( $current_user->ID );
wp_redirect( add_query_arg( $wpmem_self_delete, wpmem_profile_url() ) );
exit();
}
}
/**
* If a user deleted their account, display a success message. 사용자가 계정을 삭제하면 성공 메시지가 표시됩니다.
*/
add_filter( 'the_content', 'my_user_self_delete_msg', 999 );
function my_user_self_delete_msg($content){
if ( isset( $_GET['self_delete'] ) && 'complete' == $_GET['self_delete'] ) {
$content = wpmem_inc_regmessage( 'self_delete', 'Account deleted for: ' . sanitize_user( $_GET['username'] ) ) . $content;
}
return $content;
}
/**
* This is the member links framework. This adds the user delete
* link to the member links. If that action is selected, this
* displays the form button to validate user deletion.
*/
add_filter( 'wpmem_member_links', 'my_custom_member_links' );
function my_custom_member_links( $links ) {
// Settings.
$link_text = 'Delete My Account';
$return_text = 'Return to User Settings';
/*
* You probably don't need to change anything below here.
*/
$process_name = 'delete_my_account';
$return_link = remove_query_arg( 'a' );
$return_link = sprintf( '<p><a href="%s">%s</a></p>', esc_url( $return_link ), $return_text );
// If the page is the custom process page, build and display the form.
if ( ( isset( $_REQUEST['a'] ) && $process_name == $_REQUEST['a'] ) ) {
$content = '<p>Do you really want to delete your account?<br />This action is permanent and cannot be undone!</p>
<p><form name="form" method="post" action="' . esc_url( wpmem_profile_url() ) . '">'
. wp_nonce_field( 'wpmem_self_delete' )
. '<input type="hidden" name="self_delete" value="delete" />'
. '<input type="submit" name="submit" id="submit" class="button button-primary" value="' . $link_text . '" />'
. '</form></p>';
// Add a return button.
$links = $content . $return_link;
} else {
$link = add_query_arg( 'a', $process_name, wpmem_profile_url() );
$new_link = '<li><a href="' . esc_url( $link ) . '">' . $link_text . '</a></li>';
// Add new link at the end of the existing list.
$links = str_replace( '</ul>', $new_link . '</ul>', $links );
}
return $links;
}
위의 코드는 WP-Members 사이트의 “Allow Users to Delete Account (with confirmation message)“라는 글에 제시된 코드입니다. 2017년에 작성된 코드이기 때문에 최신 WP-Members 버전에서 잘 작동할지는 모르겠습니다. 예상대로 작동하지 않으면 WP-Members에 문의하여 상기 코드를 어떻게 수정하면 되는지 체크해볼 수 있을 것입니다.
상기 코드는 FTP에 접속하여 현재 사용 중인 테마의 함수 파일에 추가하시기 바랍니다. 차일드 테마를 만들어 작업하는 것이 좋습니다. FTP 접속 방법은 이용하는 웹호스팅 업체에 문의하시면 상세한 안내를 받을 수 있을 것입니다. 블루호스트와 같이 cPanel을 제공하는 호스팅에서는 cPanel에서 FTP 계정을 신규로 만들어 접속하는 것도 가능합니다(“해외호스팅 블루호스트 FTP 사용하기 (계정 생성 및 파일질라 설정)” 참고).
위의 코드가 제대로 작동하는지 체크해보시고, 잘 안 된다면 (사용 중인 워드프레스 버전, PHP 버전, WP-Members 버전 등의 정보와 함께) 아래 댓글을 통해 알려주시기 바랍니다. 그러면 시간이 될 때 WP-Members에 문의해보겠습니다.
마치며
이상으로 WP-Members 플러그인을 사용하는 경우 회원 탈퇴 기능을 추가하는 방법에 대하여 살펴보았습니다.
회원제 관련 서비스를 제공하는 경우 WP-Members나 UM 같은 플러그인을 사용할 수 있습니다. 하지만 일반적인 사이트에서는 회원 가입 기능 자체를 비활성화하여 사용자들이 가입을 하지 못하도록 차단하는 것을 고려해볼 수 있습니다.
https://thewordcracker.com/ 사이트 운영자님과 같은 운영자이신가요!?^^
김철진님, 블로그를 방문해주셔서 감사합니다. 댓글이 스팸으로 인식되어 이제 확인했습니다. 워드프레스 정보꾸러미 블로그와 함께 운영하고 있습니다. 시간이 부족하여 이 블로그는 방치되고 있습니다. 시간이 날 때 이 블로그에도 글을 올려보도록 노력하겠습니다.