wordpress WooCommerce 网站中的单独注册页面

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/23821488/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 19:32:37  来源:igfitidea点击:

Separate registration page in WooCommerce website

wordpresswoocommerce

提问by Lipsa

Can anybody help me build a separate registration page in WooCommerce instead of displaying it in the my-accountpage?

有人可以帮我在 WooCommerce 中建立一个单独的注册页面而不是在my-account页面中显示它吗?

In the my-accountpage I want to display a link which will take the buyer to the registration page.

my-account页面中,我想显示一个链接,将买家带到注册页面。

回答by Pushpak Patel

edit your form-login.phpfile and seperate the login form and registration form in two different sections say section A and B.

编辑您的form-login.php文件并将登录表单和注册表单分为两个不同的部分,例如 A 部分和 B 部分。

now check for a GETparameter in the page which will define which section to show. By default login will be shown, if parameter is found and is "register", show registration section

现在检查GET页面中的参数,该参数将定义要显示的部分。默认情况下会显示登录信息,如果找到参数并且是“注册”,则显示注册部分

if( isset( $_GET['action']) && $_GET['action'] == "register"){
    // Section for registration
}else {
    // Section for Login form
}

you can provide a link for registration as

你可以提供一个注册链接

<a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '?action=register"> register </a>

回答by JuSTMeCrea

The Code for form-login.php

form-login.php 的代码

is

--- START SECTION ---

--- 开始部分 ---

<?php
/**
 * Login Form
 *
 * @author      WooThemes
 * @package     WooCommerce/Templates
 * @version     2.2.6
 */

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

?>

<?php wc_print_notices(); ?>

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

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

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

    <div class="col-1">

<?php endif; ?>

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

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

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

            <p class="form-row form-row-wide">
                <label for="username"><?php _e( 'Username or email address', 'woocommerce' ); ?> <span class="required">*</span></label>
                <input type="text" class="input-text" name="username" id="username" value="<?php if ( ! empty( $_POST['username'] ) ) echo esc_attr( $_POST['username'] ); ?>" />
            </p>
            <p class="form-row form-row-wide">
                <label for="password"><?php _e( 'Password', 'woocommerce' ); ?> <span class="required">*</span></label>
                <input class="input-text" type="password" name="password" id="password" />
            </p>

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

            <p class="form-row">
                <?php wp_nonce_field( 'woocommerce-login' ); ?>
                <input type="submit" class="button" name="login" value="<?php esc_attr_e( 'Login', 'woocommerce' ); ?>" />
                <label for="rememberme" class="inline">
                    <input name="rememberme" type="checkbox" id="rememberme" value="forever" /> <?php _e( 'Remember me', 'woocommerce' ); ?>
                </label>
            </p>
            <p class="lost_password">
                <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php _e( 'Lost your password?', 'woocommerce' ); ?></a>
            </p>

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

        </form>

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

    </div>

    <div class="col-2">

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

        <form method="post" class="register">

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

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

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

            <?php endif; ?>

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

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

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

            <?php endif; ?>

            <!-- Spam Trap -->
            <div style="<?php echo ( ( is_rtl() ) ? 'right' : 'left' ); ?>: -999em; position: absolute;"><label for="trap"><?php _e( 'Anti-spam', 'woocommerce' ); ?></label><input type="text" name="email_2" id="trap" tabindex="-1" /></div>

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

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

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

        </form>

    </div>

</div>
<?php endif; ?>

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

--- END SECTION ---

--- 结束部分 ---

Whet can i put this snippet :

我可以放这个片段吗:

--- START SECTION ---

--- 开始部分 ---

if( isset( $_GET['action']) && $_GET['action'] == "register"){
    // Section for registration
}else {
    // Section for Login form
}

--- END START

--- 结束开始

and this URL

和这个网址

--- START SECTION ---

--- 开始部分 ---

<a href="' .get_permalink(woocommerce_get_page_id('myaccount')). '?action=register"> register </a>

--- END SECTION ---

--- 结束部分 ---

回答by Rasika

I finally figured out the code to have separate registration and login pages via individual links in the header.

我终于找到了通过标题中的各个链接具有单独的注册和登录页面的代码。

You will need to edit 2 files in your child theme:

您需要在子主题中编辑 2 个文件:

  1. functions.phpand
  2. form-login.php
  1. functions.php
  2. form-login.php

I have attached txt files for the code

我附上了代码的txt文件

1) functions.php: You want to create a register link in the header that links to the login page but also sets an action indicating you have clicked register. So this:

1)functions.php:您想在链接到登录页面的标题中创建一个注册链接,但还要设置一个指示您已单击注册的操作。所以这:

$aux_links_output .= ''. __("Login", "swiftframework") .''. "\n";

becomes this:

变成这样:

$aux_links_output .= ''. __("Login", "swiftframework") .''. "\n";
$aux_links_output .= ''. __("Register", "swiftframework") .''. "\n";

2) form-login.phpcode: Here you want to create an if,else statement. If you clicked register then goto register page, else goto login page:

2)form-login.php代码:这里要创建一个if,else语句。如果您点击注册然后转到注册页面,否则转到登录页面:

<?php if( isset( $_GET['action']) && $_GET['action'] == "register") : ?>

Section for registration

登记部分

<?php else : ?>

Section for Login form

登录表单部分

<?php endif; ?>

Be careful of the wrappings

小心包装物

Thanks

谢谢