如何使用模板在 WooCommerce 的两个不同页面上显示登录和注册表单 [英] How to show the login and register form on two different pages with WooCommerce using templates

查看:100
本文介绍了如何使用模板在 WooCommerce 的两个不同页面上显示登录和注册表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个显示 loginregister 表单的我的帐户页面.下面是截图.目前没有css.

我的问题是,我必须将两个页面分开.我的意思是我必须创建一个登录名并分别注册两个页面.

这是完整的代码form-login.php

<?php if ( 'yes' === get_option( 'woocommerce_enable_myaccount_registration' ) ) : ?><div class="u-columns col2-set";id="customer_login"><div class="u-column1 col-1"><?php endif;?><h2><?php esc_html_e('登录', 'woocommerce');?></h2><form class="woocommerce-form woocommerce-form-login login";方法=发布"><?php do_action('woocommerce_login_form_start');?><p class=woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"><label for="username"><?php esc_html_e( '用户名或电子邮件地址', 'woocommerce');?><span class="required">*</span></label><输入类型=文本"class="woocommerce-Input woocommerce-Input--text input-text";名称=用户名"id=用户名"自动完成=用户名"value="<?php echo ( ! empty( $_POST['username'] ) ) ?esc_attr( wp_unslash( $_POST['用户名'] ) ) : '';?>>/><?php//@codingStandardsIgnoreLine ?></p><p class=woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"><label for="password"><?php esc_html_e('密码', 'woocommerce');?><span class="required">*</span></label><input class="woocommerce-Input woocommerce-Input--text input-text";类型=密码"名称=密码"id="密码"自动完成=当前密码";/></p><?php do_action('woocommerce_login_form');?><p class="form-row"><label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme"><input class="woocommerce-form__input woocommerce-form__input-checkbox";名称=记住我"类型=复选框"id=记住我"价值=永远"/><span><?php esc_html_e('记住我', 'woocommerce');?></span><?php wp_nonce_field('woocommerce-login', 'woocommerce-login-nonce');?><按钮类型=提交"class="woocommerce-button button woocommerce-form-login__submit";名称=登录"value="<?php esc_attr_e( '登录', 'woocommerce');?>>><?php esc_html_e('登录', 'woocommerce');?></按钮></p><p class="woocommerce-LostPassword lost_password"><a href="<?php echo esc_url( wp_lostpassword_url() );?>>><?php esc_html_e('丢失密码?', 'woocommerce');?></a></p><?php do_action('woocommerce_login_form_end');?></表单><?php if ( 'yes' === get_option( 'woocommerce_enable_myaccount_registration' ) ) : ?>

<div class="u-column2 col-2"><h2><?php esc_html_e('注册', 'woocommerce');?></h2><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('用户名', 'woocommerce');?><span class="required">*</span></label><输入类型=文本"class="woocommerce-Input woocommerce-Input--text input-text";名称=用户名"id="reg_username";自动完成=用户名"value="<?php echo (!empty( $_POST['username'] ) ) ?esc_attr( wp_unslash( $_POST['用户名'] ) ) : '';?>>/><?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><输入类型=电子邮件"class="woocommerce-Input woocommerce-Input--text input-text";名称=电子邮件"id="reg_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('密码', 'woocommerce');?><span class="required">*</span></label><输入类型=密码"class="woocommerce-Input woocommerce-Input--text input-text";名称=密码"id="reg_password";自动完成=新密码";/></p><?php 其他:?><p><?php esc_html_e( '密码将发送到您的电子邮件地址.', 'woocommerce');?></p><?php endif;?><?php do_action('woocommerce_register_form');?><p class="woocommerce-form-row form-row"><?php wp_nonce_field('woocommerce-register', 'woocommerce-register-nonce');?><按钮类型=提交"class="woocommerce-Button woocommerce-button button woocommerce-form-register__submit";名称=注册"value="<?php esc_attr_e('注册', 'woocommerce');?>>><?php esc_html_e('注册', 'woocommerce');?></按钮></p><?php do_action('woocommerce_register_form_end');?></表单>

<?php endif;?><?php do_action('woocommerce_after_customer_login_form');?>

我在 stackoverflow 上找到了两个链接

儿童主题

<块引用>

所有模板都必须加载到您的子主题中(否则它们将在下一次 WooCommerce 插件更新时被覆盖).

目录为:/your-child-theme/woocommerce/myaccount/

模板

必须有3个模板文件:

  1. form-login.php:用户未登录时加载的模板.
  2. form-login-single-page.php:包含登录表单的模板
  3. form-register-single-page.php:包含注册表单的模板

form-login.php /your-child-theme/woocommerce/myaccount/form-login.php

form-login-single-page.php /your-child-theme/woocommerce/myaccount/form-login-single-page.php

<div class="u-columns col2-set";id="customer_login"><div class="u-column1 col-1"><h2><?php esc_html_e('登录', 'woocommerce');?></h2><form class="woocommerce-form woocommerce-form-login login";方法=发布"><?php do_action('woocommerce_login_form_start');?><p class=woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"><label for="username"><?php esc_html_e( '用户名或电子邮件地址', 'woocommerce');?><span class="required">*</span></label><输入类型=文本"class="woocommerce-Input woocommerce-Input--text input-text";名称=用户名"id=用户名"自动完成=用户名"value="<?php echo (!empty( $_POST['username'] ) ) ?esc_attr( wp_unslash( $_POST['用户名'] ) ) : '';?>>/><?php//@codingStandardsIgnoreLine ?></p><p class=woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide"><label for="password"><?php esc_html_e('密码', 'woocommerce');?><span class="required">*</span></label><input class="woocommerce-Input woocommerce-Input--text input-text";类型=密码"名称=密码"id="密码"自动完成=当前密码";/></p><?php do_action('woocommerce_login_form');?><p class="form-row"><label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme"><input class="woocommerce-form__input woocommerce-form__input-checkbox";名称=记住我"类型=复选框"id=记住我"价值=永远"/><span><?php esc_html_e('记住我', 'woocommerce');?></span><?php wp_nonce_field('woocommerce-login', 'woocommerce-login-nonce');?><按钮类型=提交"class="woocommerce-button button woocommerce-form-login__submit";名称=登录"value="<?php esc_attr_e( '登录', 'woocommerce');?>>><?php esc_html_e('登录', 'woocommerce');?></按钮><a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') );?>?动作=注册"class="woocommerce-button 按钮 woocommerce-form-register";name=注册"></表单><?php do_action('woocommerce_after_customer_login_form');?>

form-register-single-page.php /your-child-theme/woocommerce/myaccount/form-register-single-page.php

<?php if ( 'yes' === get_option( 'woocommerce_enable_myaccount_registration' ) ) : ?><div class="u-column2 col-2"><h2><?php esc_html_e('注册', 'woocommerce');?></h2><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('用户名', 'woocommerce');?><span class="required">*</span></label><输入类型=文本"class="woocommerce-Input woocommerce-Input--text input-text";名称=用户名"id="reg_username";自动完成=用户名"value="<?php echo (!empty( $_POST['username'] ) ) ?esc_attr( wp_unslash( $_POST['用户名'] ) ) : '';?>>/><?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><输入类型=电子邮件"class="woocommerce-Input woocommerce-Input--text input-text";名称=电子邮件"id="reg_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('密码', 'woocommerce');?><span class="required">*</span></label><输入类型=密码"class="woocommerce-Input woocommerce-Input--text input-text";名称=密码"id="reg_password";自动完成=新密码";/></p><?php 其他:?><p><?php esc_html_e( '密码将发送到您的电子邮件地址.', 'woocommerce');?></p><?php endif;?><?php do_action('woocommerce_register_form');?><p class="woocommerce-form-row form-row"><?php wp_nonce_field('woocommerce-register', 'woocommerce-register-nonce');?><按钮类型=提交"class="woocommerce-Button woocommerce-button button woocommerce-form-register__submit";名称=注册"value="<?php esc_attr_e('注册', 'woocommerce');?>>><?php esc_html_e('注册', 'woocommerce');?></按钮><a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') );?>>class =woocommerce-button 按钮 woocommerce-form-login"name=登录"><?php esc_attr_e('登录', 'woocommerce');?></a></p><?php do_action('woocommerce_register_form_end');?></表单>

<?php endif;

结果

登录表单
www.yourdomain.com/my-account/

注册表格
www.yourdomain.com/my-account/?action=register

注意

用户名密码字段将根据管理页面上选择的相应选项显示或隐藏:WooCommerce >设置 >帐户和隐私:

模板已经过测试和工作.

自定义字段

您可以根据自己的喜好随意修改模板.您可以编辑添加自定义字段.在后一种情况下,请记住验证并保存自定义字段的数据.您可以使用以下钩子:

I have a my-account page which is displaying the login and register form. Below is the screenshot. There is no css as of now.

My issue is, I have to separate both the pages. I mean I have to create a login and register both pages separately.

This is the whole code form-login.php

<?PHP
/**
 * Login Form
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/myaccount/form-login.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files, and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see     https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce\Templates
 * @version 4.1.0
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

do_action( 'woocommerce_before_customer_login_form' ); ?>

<?php if ( 'yes' === get_option( 'woocommerce_enable_myaccount_registration' ) ) : ?>

<div class="u-columns col2-set" id="customer_login">

    <div class="u-column1 col-1">

<?php endif; ?>

        <h2><?php esc_html_e( 'Login', 'woocommerce' ); ?></h2>

        <form class="woocommerce-form woocommerce-form-login login" method="post">

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

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

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

            <p class="form-row">
                <label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme">
                    <input class="woocommerce-form__input woocommerce-form__input-checkbox" name="rememberme" type="checkbox" id="rememberme" value="forever" /> <span><?php esc_html_e( 'Remember me', 'woocommerce' ); ?></span>
                </label>
                <?php wp_nonce_field( 'woocommerce-login', 'woocommerce-login-nonce' ); ?>
                <button type="submit" class="woocommerce-button button woocommerce-form-login__submit" name="login" value="<?php esc_attr_e( 'Log in', 'woocommerce' ); ?>"><?php esc_html_e( 'Log in', 'woocommerce' ); ?></button>
            </p>
            <p class="woocommerce-LostPassword lost_password">
                <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'woocommerce' ); ?></a>
            </p>

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

        </form>

<?php if ( 'yes' === get_option( 'woocommerce_enable_myaccount_registration' ) ) : ?>

    </div>

    <div class="u-column2 col-2">

        <h2><?php esc_html_e( 'Register', 'woocommerce' ); ?></h2>

        <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' ); ?>&nbsp;<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' ); ?>&nbsp;<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' ); ?>&nbsp;<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-form-row 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>

    </div>

</div>
<?php endif; ?>

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

I found two links on stackoverflow

How to create separate log-in and registration pages in WooCommerce

Separate registration page in WooCommerce website

I found this code

<?php
if( isset($_GET['action']) == 'register' ) {
    wc_get_template( 'myaccount/form-register.php' );
} else {
    wc_get_template( 'myaccount/form-login-single.php' );
}
?>

I have lots of doubt

  1. Where should I add this code?
  2. Do I need to create a login and register page in WordPress?
  3. Or do I need to create a login and register inside my-account like form-login-1.php and form-register-1 and add a code separately with a shortcode?

Would you help me out with this issue?

解决方案

To create two separate pages for the login form and the registration form it is necessary to have 3 templates. Using templates, you won't have to change a single line of functions.php.

This snippet:

<?php
if( isset($_GET['action']) == 'register' ) {
    wc_get_template( 'myaccount/form-register.php' );
} else {
    wc_get_template( 'myaccount/form-login-single.php' );
}
?>

has the purpose of loading the template of the login form or the template of the registration form based on the url of the page.

The goal will be:

  • if the page url is www.yourdomain.com/my-account/, the login form is loaded
  • if the page url is www.yourdomain.com/my-account/?action=register, the registration form is loaded

PREMISE

To view the registration form correctly, you must enable the "Allow customers to create an account on the My account page" function.

From the Wordpress admin page go to: WooCommerce > Settings > Accounts & Privacy.

CHILD THEME

All templates must be loaded within your child theme (otherwise they will be overwritten at the next WooCommerce plugin update).

The directory is: /your-child-theme/woocommerce/myaccount/

TEMPLATES

It is necessary to have 3 template files:

  1. form-login.php: the template that is loaded when the user is not logged in.
  2. form-login-single-page.php: the template that will contain the login form
  3. form-register-single-page.php: the template that will contain the registration form

form-login.php /your-child-theme/woocommerce/myaccount/form-login.php

<?php
/**
 * Login Form (by default)
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

if( isset( $_GET['action'] ) == 'register' ) {
    wc_get_template( 'myaccount/form-register-single-page.php' );
} else {
    wc_get_template( 'myaccount/form-login-single-page.php' );
}

form-login-single-page.php /your-child-theme/woocommerce/myaccount/form-login-single-page.php

<?php
/**
 * Login Form
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

do_action( 'woocommerce_before_customer_login_form' ); ?>

<div class="u-columns col2-set" id="customer_login">

    <div class="u-column1 col-1">

        <h2><?php esc_html_e( 'Login', 'woocommerce' ); ?></h2>

        <form class="woocommerce-form woocommerce-form-login login" method="post">

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

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

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

            <p class="form-row">
                <label class="woocommerce-form__label woocommerce-form__label-for-checkbox woocommerce-form-login__rememberme">
                    <input class="woocommerce-form__input woocommerce-form__input-checkbox" name="rememberme" type="checkbox" id="rememberme" value="forever" /> <span><?php esc_html_e( 'Remember me', 'woocommerce' ); ?></span>
                </label>
                <?php wp_nonce_field( 'woocommerce-login', 'woocommerce-login-nonce' ); ?>
                <button type="submit" class="woocommerce-button button woocommerce-form-login__submit" name="login" value="<?php esc_attr_e( 'Log in', 'woocommerce' ); ?>"><?php esc_html_e( 'Log in', 'woocommerce' ); ?></button>
                <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>?action=register" class="woocommerce-button button woocommerce-form-register" name="register"><?php esc_attr_e( 'Register', 'woocommerce' ); ?></a>
            </p>
            <p class="woocommerce-LostPassword lost_password">
                <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'woocommerce' ); ?></a>
            </p>

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

        </form>

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

form-register-single-page.php /your-child-theme/woocommerce/myaccount/form-register-single-page.php

<?php
/**
 * Register Form
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

?>

<?php if ( 'yes' === get_option( 'woocommerce_enable_myaccount_registration' ) ) : ?>

<div class="u-column2 col-2">

    <h2><?php esc_html_e( 'Register', 'woocommerce' ); ?></h2>

    <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' ); ?>&nbsp;<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' ); ?>&nbsp;<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' ); ?>&nbsp;<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-form-row 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>
            <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" class="woocommerce-button button woocommerce-form-login" name="login"><?php esc_attr_e( 'Log in', 'woocommerce' ); ?></a>
        </p>

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

    </form>

</div>

<?php endif;

RESULT

Login form
www.yourdomain.com/my-account/

Register form
www.yourdomain.com/my-account/?action=register

NOTE

The Username and Password fields will be visible or hidden according to the respective options selected on the administration page: WooCommerce > Settings > Accounts & Privacy:

  • When creating an account, automatically generate an account username for the customer based on their name, surname or email
  • When creating an account, automatically generate an account password

The templates have been tested and work.

CUSTOM FIELDS

Feel free to modify the templates to your liking. You can edit or add custom fields. In the latter case, remember to validate and save the data of the custom fields. You can use the following hooks:

  • woocommerce_register_form: to add custom fields
  • woocommerce_process_registration_errors: to validate the fields
  • user_register: save custom fields as user meta

这篇关于如何使用模板在 WooCommerce 的两个不同页面上显示登录和注册表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆