WooCommerce: 별도의 로그인 및 등록 페이지

게시 됨: 2019-02-13

로그아웃한 고객은 로그인 페이지로, 미등록 고객은 별도의 등록 페이지로 보내야 하는 경우가 있습니다.

아시다시피 [woocommerce_my_account] 단축 코드가 포함된 WooCommerce 내 계정 페이지에는 내 계정 설정에서 등록이 활성화된 경우 로그인 및 등록 양식이 모두 있습니다.

이것은 사용자 등록과 같은 특정 목표를 가진 방문 페이지나 판매 페이지를 사용할 때 항상 좋은 생각은 아닙니다.

분명히, 이런 일이 발생하면 거기에 로그인 양식을 갖고 싶지 않을 것입니다. 내 솔루션은 로그인 양식용과 등록 양식용의 두 가지 새로운 단축 코드를 제공합니다.

등록 페이지 단축 코드 콘텐츠는 WooCommerce 템플릿 파일에서 복사됩니다. WooCommerce가 업데이트를 출시하거나 이러한 파일을 변경하는 경우 스니펫도 업데이트해야 할 수 있습니다.

시도해 보세요. 피드백은 매우 감사합니다.

WooCommerce 로그인 및 등록 양식을 별도로 표시하는 새로운 단축 코드

아래 단축 코드를 사용하기 전에 해야 할 일...

아시다시피, [woocommerce_my_account] 단축 코드는 매우 중요하며 어떤 경우에도 WooCommerce 내 계정 페이지에 보관해야 합니다. 즉, 내 계정 페이지를 제거하거나 삭제할 수 없습니다.

따라서 LOGIN + MY ACCOUNT 페이지와 별도의 REGISTRATION 페이지를 갖고 싶다면 다음 스택을 사용하십시오.

  • 등록 페이지의 [wc_reg_form_bloomer] – SNIPPET #1 BELOW
  • 내 계정 페이지의 [woocommerce_my_account]
  • 등록 리디렉션 스니펫을 추가하여 내 계정 페이지로 이동합니다.

별도의 LOGIN, REGISTRATION 및 MY ACCOUNT 페이지를 갖고 싶다면 다음 스택을 사용하십시오.

  • 등록 페이지의 [wc_reg_form_bloomer] – SNIPPET #1 BELOW
  • 로그인 페이지의 [wc_login_form_bloomer] – SNIPPET #2 BELOW
  • 내 계정 페이지의 [woocommerce_my_account ]
  • 등록 리디렉션 스니펫을 추가하여 내 계정 페이지로 이동합니다.

두 경우 모두 " 계정 및 개인 정보 " 설정 " 에서 " 고객이 " 내 계정 " 페이지에서 계정을 만들 수 있도록 허용 " 확인란을 비활성화해야 합니다 .

어느 쪽이든 "내 계정" 페이지에서 등록을 비활성화해야 합니다.

PHP 스니펫 #1: 별도의 WooCommerce 고객 등록 양식 단축 코드

이 단축 코드 [wc_reg_form_bloomer]를 새로운 WordPress 페이지에 배치하면 등록 양식이 마술처럼 나타납니다.

/**
 * @snippet       WooCommerce User Registration Shortcode
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
  
add_shortcode( 'wc_reg_form_bbloomer', 'bbloomer_separate_registration_form' );
   
function bbloomer_separate_registration_form() {
	if ( is_admin() ) return;
	if ( is_user_logged_in() ) return;
	ob_start();

	do_action( 'woocommerce_before_customer_login_form' );

   // NOTE: THE FOLLOWING <FORM></FORM> IS COPIED FROM woocommerce\templates\myaccount\form-login.php
	// IF WOOCOMMERCE RELEASES AN UPDATE TO THAT TEMPLATE, YOU MUST CHANGE THIS ACCORDINGLY

	?>

		<form method="post" class="woocommerce-form woocommerce-form-register register" <?php do_action( 'woocommerce_register_form_tag' ); ?> >

			<?php do_action( 'woocommerce_register_form_start' ); ?>

			<?php if ( 'no' === get_option( 'woocommerce_registration_generate_username' ) ) : ?>

				<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
					<label for="reg_username"><?php esc_html_e( 'Username', 'woocommerce' ); ?> <span class="required">*</span></label>
					<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="username" id="reg_username" autocomplete="username" value="<?php echo ( ! empty( $_POST['username'] ) ) ? esc_attr( wp_unslash( $_POST['username'] ) ) : ''; ?>" /><?php // @codingStandardsIgnoreLine ?>
				</p>

			<?php endif; ?>

			<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
				<label for="reg_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?> <span class="required">*</span></label>
				<input type="email" class="woocommerce-Input woocommerce-Input--text input-text" name="email" id="reg_email" autocomplete="email" value="<?php echo ( ! empty( $_POST['email'] ) ) ? esc_attr( wp_unslash( $_POST['email'] ) ) : ''; ?>" /><?php // @codingStandardsIgnoreLine ?>
			</p>

			<?php if ( 'no' === get_option( 'woocommerce_registration_generate_password' ) ) : ?>

				<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
					<label for="reg_password"><?php esc_html_e( 'Password', 'woocommerce' ); ?> <span class="required">*</span></label>
					<input type="password" class="woocommerce-Input woocommerce-Input--text input-text" name="password" id="reg_password" autocomplete="new-password" />
				</p>

			<?php else : ?>

				<p><?php esc_html_e( 'A password will be sent to your email address.', 'woocommerce' ); ?></p>

			<?php endif; ?>

			<?php do_action( 'woocommerce_register_form' ); ?>

			<p class="woocommerce-FormRow form-row">
				<?php wp_nonce_field( 'woocommerce-register', 'woocommerce-register-nonce' ); ?>
				<button type="submit" class="woocommerce-Button woocommerce-button button woocommerce-form-register__submit" name="register" value="<?php esc_attr_e( 'Register', 'woocommerce' ); ?>"><?php esc_html_e( 'Register', 'woocommerce' ); ?></button>
			</p>

			<?php do_action( 'woocommerce_register_form_end' ); ?>

		</form>

	<?php
    
	return ob_get_clean();

}

PHP 스니펫 #2: 별도의 WooCommerce 로그인 양식 단축 코드

위의 참고 사항을 읽으십시오. 이 단축 코드가 전혀 필요하지 않을 수 있으며 [woocommerce_my_account] 로그인 양식을 표시하기에 충분할 수 있습니다.

그렇지 않으면 이 단축 코드 [wc_login_form_bloomer]를 새로운 로그인 페이지에 추가하십시오.

/**
 * @snippet       WooCommerce User Login Shortcode
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 6
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_shortcode( 'wc_login_form_bbloomer', 'bbloomer_separate_login_form' );
 
function bbloomer_separate_login_form() {
	if ( is_admin() ) return;
	if ( is_user_logged_in() ) return; 
	ob_start();
	woocommerce_login_form( array( 'redirect' => '/my-account' ) );
	return ob_get_clean();
}