如何在 WooCommerce 中创建单独的登录和注册页面

已发表: 2021-05-18

WooCommerce 中的单独登录和注册页面 您是否正在寻找一种以编程方式分隔登录和注册页面的方法? 这个简短的教程将为您提供一个简单的解决方案。

您可能希望将已注销的客户发送到登录页面,将未注册的客户发送到单独的页面。 默认情况下,WooCommerce 在同一页面上显示登录表单和注册表单。

值得一提的是,WooCommerce 我的帐户页面由 [woocommerce_my_account] 短代码显示。

如果您想使用具有特定目标(如用户注册)的登录页面或销售页面,则在同一页面上同时拥有登录和注册表单可能不是一个好主意。 这意味着此页面不需要登录表单。

如何在 WooCommerce 中创建单独的登录和注册页面

在这个简短的教程中,我们将向您展示如何分离登录和注册页面。 我们将向您展示如何创建两个新的短代码,一个用于登录表单,一个用于注册表单。 这些简码可以在您网站的任何地方使用。

让我们看看如何实现这一目标。

在 WooCommerce 中创建单独的登录和注册页面的步骤

在继续之前,请务必注意用于创建短代码的内容是从 WooCommerce 模板文件中复制的。 这意味着当 WooCommerce 在更新期间发布对这些文件的任何更改时,您需要更改代码的某些部分。

请继续阅读,因为我们还将向您展示如何使用短代码。

以下是您需要遵循的步骤:

  1. 登录您的 WordPress 站点并以管理员用户身份访问仪表板
  2. 从仪表板菜单中,单击外观菜单 > 主题编辑器菜单。 当主题编辑器页面打开时,查找主题函数文件,我们将在其中添加将创建注册页面短代码的函数。
  3. 将以下代码添加php文件中:
add_shortcode( 'wc_reg_form_njengah', 'njengah_separate_registration_form' );

function njengah_separate_registration_form() {

if ( is_admin() ) return;

if ( is_user_logged_in() ) return;

ob_start();

// 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

do_action( 'woocommerce_before_customer_login_form' );

?>

<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();

}
  1. 第二个短代码是 [wc_login_form_bbloomer]。 您应该将其添加到全新的页面。 在同一文件中添加以下代码:
add_shortcode( 'wc_login_form_njengah', 'njengah_separate_login_form' );

function njengah_separate_login_form() {

if ( is_admin() ) return;

if ( is_user_logged_in() ) return;

ob_start();

woocommerce_login_form( array( 'redirect' => 'https://custom.url' ) );

return ob_get_clean();

}

如何使用简码

如前所述, [woocommerce_my_account]短代码显示“我的帐户”页面。 如果您想在同一页面上登录时保留登录表单和帐户页面仪表板,您应该使用第一个短代码: [woocommerce_my_account]

如果您想要登录 + 我的帐户,以及单独的注册页面:

  • 注册页面上的 [wc_reg_form_njengah]
  • 登录 + 帐户页面上的 [woocommerce_my_account]

如果您想拥有单独的登录、注册和我的帐户页面:

  • wc_reg_form_njengah] 在注册页面上
  • 登录页面上的 [wc_login_form_njengah]
  • 我的帐户页面上的 [woocommerce_my_njengah]

但是,您需要禁用“允许客户创建帐户”,如下所示: 帐户

结论

这就是分离登录和注册页面所需要做的一切。 请记住将短代码复制并粘贴到新页面上。

我们建议创建一个子主题。 这将确保您的更改在更新期间不会丢失。

我们希望这篇文章有助于解决您的问题。

类似文章

  1. 如何访问 WordPress 管理仪表板或登录到您的 WordPress 仪表板