how do I apply woocommerce coupon code using my keyboard enter key? - php

On the backend, I add a coupon code. If I click the submit button the coupon code will apply. How do I apply my coupon code pressing the enter key in mobile and desktop? Some users will press enter instead using the mouse to click button. Default woocommerce doesn't have that feature. how do I make it work? Thanks
$("#inputbox").keypress(function(event) {
if (event.which == 13) {
event.preventDefault();
$(this).closest('input[type=submit]').click();
}
});
<form id="testt" action="<?php echo esc_url( WC()->cart->get_cart_url() ); ?>" method="post">
<?php do_action( 'woocommerce_before_cart_table' ); ?>
<div class="coupon">
<?php if ( WC()->cart->coupons_enabled() ) { ?>
<span for="coupon_code"><?php _e( 'Coupon code:', 'woocommerce' ); ?></span>
<div class="input-container">
<div class="form-row">
<input id="inputbox" class="input" type="text" name="coupon_code" value="" placeholder="<?php esc_attr_e( 'bebrave', 'woocommerce' ); ?>" />
</div>
<input type="submit" class="ds btn" name="apply_coupon" value="<?php esc_attr_e( 'Apply Coupon', 'woocommerce' ); ?>" />
<?php do_action( 'woocommerce_cart_coupon' ); ?>
</div>
<?php } ?>
<?php wc_print_notices(); ?>
<?php do_action( 'woocommerce_cart_actions' ); ?>
<?php wp_nonce_field( 'woocommerce-cart' ); ?>
</div>
<?php do_action( 'woocommerce_after_cart_contents' ); ?>
<?php do_action( 'woocommerce_after_cart_table' ); ?>
</form>

Related

Redirect user after registration via separate registration page to a specific page in WooCommerce

I need to redirect users when they click the register button to the my-account billing page. I had this working perfectly using via the code from Redirect after registration to WooCommerce "my account" edit address page answer code.
However that was when the register and login pages were on the same page, now however I've had to make a different registration page using the code:
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();
// 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( 'Next', 'woocommerce' ); ?>"><?php esc_html_e( 'Next', 'woocommerce' ); ?></button>
</p>
<?php do_action( 'woocommerce_register_form_end' ); ?>
</form>
<?php
return ob_get_clean();
}
Source: WooCommerce: Separate Login and Registration Pages
This now redirects me to a 404 of
register-now/edit-address/billing/
And I need it to redirect me to
my-account/edit-address/billing/
You should replace the code from the woocommerce_registration_redirect filter hook with:
function filter_woocommerce_registration_redirect( $redirect ) {
return get_permalink( get_option( 'woocommerce_myaccount_page_id') ) . 'edit-address/billing';
}
add_filter( 'woocommerce_registration_redirect', 'filter_woocommerce_registration_redirect', 10, 1 );
See: get_permalink( int|WP_Post $post, bool $leavename = false ) - Retrieves the full permalink for the current post or post ID

How to show the login and register form on two different pages with WooCommerce using templates

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' ); ?> <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' ); ?> <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">
<?php esc_html_e( 'Lost your password?', 'woocommerce' ); ?>
</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' ); ?> <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-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 Stack Overflow:
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 several questions:
Where should I add this code?
Do I need to create a login and register page in WordPress?
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?
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:
form-login.php: the template that is loaded when the user is not logged in.
form-login-single-page.php: the template that will contain the login form
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' ); ?> <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' ); ?> <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>
<?php esc_attr_e( 'Register', 'woocommerce' ); ?>
</p>
<p class="woocommerce-LostPassword lost_password">
<?php esc_html_e( 'Lost your password?', 'woocommerce' ); ?>
</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' ); ?> <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-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>
<?php esc_attr_e( 'Log in', 'woocommerce' ); ?>
</p>
<?php do_action( 'woocommerce_register_form_end' ); ?>
</form>
</div>
<?php endif;
RESULT
Login formwww.yourdomain.com/my-account/
Register formwww.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 - Registration page no response on form submit

I'm trying to create a separate registration page for new customers, I successfully created one for the login page by creating a copy of the original file of form-login.php and access it using the following code in functions.php
//create a new shortcode for login PHP and input the shortcode on the created page.
function custom_sign_in( $atts ) {
return woocommerce_get_template( "myaccount/form-login-custom.php" );
}
add_shortcode('custom_sign_in', 'custom_sign_in');
I just created a new page then used the shortcode for login php.
then the code of login PHP is from the original file of woocommerce/my-account/form-login.php, I just added some class to the elements and hide the registration form via CSS.
Now, with the registration page, I do the same. Unfortunately, it doesn't work. When I tried to click the submit button, nothing works, even hitting enter from the keyboard is not working not even reloading the page. I think I'm missing something but I can't figure out what it is.
here's the code for the registration PHP, I just added some class to the elements to hide the login form, this is also from the original file of form-login.php, I did not delete anything, just added some CSS to hide the unnecessary elements.
<?php
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 customer_registration" 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' ); ?> <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' ); ?> <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' ); ?>
</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" class="csx-custom-label">
<?php esc_html_e( 'E-Mail Address', 'woocommerce' ); ?>
</label>
<div class="csx-custom-input"><i class="fas fa-at csx-custom-form-icon"></i><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'] ) ) : ''; ?>"/>
</div>
<?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" class="csx-custom-label">
<?php esc_html_e( 'Password', 'woocommerce' ); ?>
</label>
<div class="csx-custom-input"><i class="fas fa-key csx-custom-form-icon"></i><input type="password" class="woocommerce-Input woocommerce-Input--text input-text csx-password" name="password" id="reg_password" autocomplete="new-password"/><i class="fas fa-eye-slash"></i>
</div>
</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( 'Continue', 'woocommerce' ); ?>">
<?php esc_html_e( 'Continue', 'woocommerce' ); ?>
</button>
</p>
<?php do_action( 'woocommerce_register_form_end' ); ?>
</form>
</div>
</div>
<?php endif; ?>
<?php do_action( 'woocommerce_after_customer_login_form' ); ?>
Anyway, I'm using Dokan plugin too. And this solution doesn't work for me, just in case you think it is duplicate.
This is something related to Dokan. What happened is your default registration form will override by Dokan. To retain the original functionality of the default registration form, you need to remove the dokan vendor registration on it.
Add the below hook in your functions.php.
remove_action( 'woocommerce_register_form', 'dokan_seller_reg_form_fields' );

WooCommerce: Coupon field doesn't show error or success messages after moving the form

I've moved the coupon field in the cart from the items table to the cart totals table.
Everything works fine so far. But after adding a code, the form doesn't show any error or success messages.
I tired to figure out why that's the case but couldn't find anything?
Is there some javascript involved? Do I miss some classes?
Here's my current code:
<?php
add_action( 'woocommerce_cart_totals_before_shipping', 'display_coupon_form_below_proceed_checkout', 100 );
function display_coupon_form_below_proceed_checkout() { ?>
<?php if ( wc_coupons_enabled() ) { ?>
<tr class="cart-discount-add">
<th colspan="2">
<a data-toggle="collapse" href="#collapseCartCoupon" role="button" aria-expanded="false" aria-controls="collapseCartCoupon">Add coupon code</a>
</th>
</tr>
<tr class="cart-discount-form">
<td colspan="2">
<form class="woocommerce-coupon-form" action="<?php echo esc_url( wc_get_cart_url() ); ?>" method="post">
<div class="coupon collapse" id="collapseCartCoupon">
<div class="input-group">
<input type="text" name="coupon_code" class="form-control input-text" id="coupon_code" value="" placeholder="<?php esc_attr_e( 'Coupon code', 'woocommerce' ); ?>" />
<div class="input-group-append">
<button type="submit" class="button" name="apply_coupon" value="<?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?>"><?php esc_attr_e( 'Apply coupon', 'woocommerce' ); ?></button>
</div>
</div>
</div>
</form>
</td>
</tr>
<?php } ?>
<?php } ?>

How to build a php if-statement based on the status of a form (submited/unsubmited)?

Right now, when I submit a form, I get this in my URL:
http://www.taiwantalk.org/users/admin/edit/?updated=true
It's a form to updates an user's profile (I'm using Wordpress
but I guess that ?updated=true is a php thing).
I want to build a if-statement with that information:
if ( form=updated] ) {
//do this
}
How to build an if-statement based on the submitted or updated status of the form?
EDIT:
The source code of the form (just in case):
<form id="bbp-your-profile" action="<?php bbp_user_profile_edit_url( bbp_get_displayed_user_id() ); ?>" method="post">
<h2 class="entry-title"><?php _e( 'Name', 'bbpress' ) ?></h2>
<?php do_action( 'bbp_user_edit_before' ); ?>
<fieldset class="bbp-form">
<legend><?php _e( 'Name', 'bbpress' ) ?></legend>
<?php do_action( 'bbp_user_edit_before_name' ); ?>
<div>
<label for="first_name"><?php _e( 'First Name', 'bbpress' ) ?></label>
<input type="text" name="first_name" id="first_name" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'first_name' ) ); ?>" class="regular-text" />
</div>
<div>
<label for="last_name"><?php _e( 'Last Name', 'bbpress' ) ?></label>
<input type="text" name="last_name" id="last_name" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'last_name' ) ); ?>" class="regular-text" />
</div>
<div>
<label for="nickname"><?php _e( 'Nickname', 'bbpress' ); ?></label>
<input type="text" name="nickname" id="nickname" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'nickname' ) ); ?>" class="regular-text" />
</div>
<div>
<label for="display_name"><?php _e( 'Display name publicly as', 'bbpress' ) ?></label>
<?php bbp_edit_user_display_name(); ?>
</div>
<?php do_action( 'bbp_user_edit_after_name' ); ?>
</fieldset>
<h2 class="entry-title"><?php _e( 'Contact Info', 'bbpress' ) ?></h2>
<fieldset class="bbp-form">
<legend><?php _e( 'Contact Info', 'bbpress' ) ?></legend>
<?php do_action( 'bbp_user_edit_before_contact' ); ?>
<div>
<label for="url"><?php _e( 'Website', 'bbpress' ) ?></label>
<input type="text" name="url" id="url" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'user_url' ) ); ?>" class="regular-text code" />
</div>
<?php foreach ( bbp_edit_user_contact_methods() as $name => $desc ) : ?>
<div>
<label for="<?php echo $name; ?>"><?php echo apply_filters( 'user_'.$name.'_label', $desc ); ?></label>
<input type="text" name="<?php echo $name; ?>" id="<?php echo $name; ?>" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'name' ) ); ?>" class="regular-text" />
</div>
<?php endforeach; ?>
<?php do_action( 'bbp_user_edit_after_contact' ); ?>
</fieldset>
<h2 class="entry-title"><?php bbp_is_user_home() ? _e( 'About Yourself', 'bbpress' ) : _e( 'About the user', 'bbpress' ); ?></h2>
<fieldset class="bbp-form">
<legend><?php bbp_is_user_home() ? _e( 'About Yourself', 'bbpress' ) : _e( 'About the user', 'bbpress' ); ?></legend>
<?php do_action( 'bbp_user_edit_before_about' ); ?>
<div>
<label for="description"><?php _e( 'Biographical Info', 'bbpress' ); ?></label>
<textarea name="description" id="description" rows="5" cols="30"><?php echo esc_attr( bbp_get_displayed_user_field( 'description' ) ); ?></textarea>
<span class="description"><?php _e( 'Share a little biographical information to fill out your profile. This may be shown publicly.', 'bbpress' ); ?></span>
</div>
<?php do_action( 'bbp_user_edit_after_about' ); ?>
</fieldset>
<h2 class="entry-title"><?php _e( 'Account' ) ?></h2>
<fieldset class="bbp-form">
<legend><?php _e( 'Account' ) ?></legend>
<?php do_action( 'bbp_user_edit_before_account' ); ?>
<div>
<label for="user_login"><?php _e( 'Username', 'bbpress' ); ?></label>
<input type="text" name="user_login" id="user_login" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'user_login' ) ); ?>" disabled="disabled" class="regular-text" />
<span class="description"><?php _e( 'Usernames cannot be changed.', 'bbpress' ); ?></span>
</div>
<div>
<label for="email"><?php _e( 'Email', 'bbpress' ); ?></label>
<input type="text" name="email" id="email" value="<?php echo esc_attr( bbp_get_displayed_user_field( 'user_email' ) ); ?>" class="regular-text" />
<?php
// Handle address change requests
$new_email = get_option( bbp_get_displayed_user_id() . '_new_email' );
if ( $new_email && $new_email != bbp_get_displayed_user_field( 'user_email' ) ) : ?>
<span class="updated inline">
<?php printf( __( 'There is a pending email address change to <code>%1$s</code>. Cancel', 'bbpress' ), $new_email['newemail'], esc_url( self_admin_url( 'user.php?dismiss=' . bbp_get_current_user_id() . '_new_email' ) ) ); ?>
</span>
<?php endif; ?>
</div>
<div id="password">
<label for="pass1"><?php _e( 'New Password', 'bbpress' ); ?></label>
<fieldset class="bbp-form">
<input type="password" name="pass1" id="pass1" size="16" value="" autocomplete="off" />
<span class="description"><?php _e( 'If you would like to change the password type a new one. Otherwise leave this blank.', 'bbpress' ); ?></span>
<input type="password" name="pass2" id="pass2" size="16" value="" autocomplete="off" />
<span class="description"><?php _e( 'Type your new password again.', 'bbpress' ); ?></span><br />
<div id="pass-strength-result"></div>
<span class="description indicator-hint"><?php _e( 'Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers and symbols like ! " ? $ % ^ & ).', 'bbpress' ); ?></span>
</fieldset>
</div>
<?php if ( !bbp_is_user_home() ) : ?>
<div>
<label for="role"><?php _e( 'Role:', 'bbpress' ) ?></label>
<?php bbp_edit_user_role(); ?>
</div>
<?php endif; ?>
<?php if ( is_multisite() && is_super_admin() && current_user_can( 'manage_network_options' ) ) : ?>
<div>
<label for="role"><?php _e( 'Super Admin', 'bbpress' ); ?></label>
<label>
<input type="checkbox" id="super_admin" name="super_admin"<?php checked( is_super_admin( bbp_get_displayed_user_id() ) ); ?> />
<?php _e( 'Grant this user super admin privileges for the Network.', 'bbpress' ); ?>
</label>
</div>
<?php endif; ?>
<?php do_action( 'bbp_user_edit_after_account' ); ?>
</fieldset>
<?php do_action( 'bbp_user_edit_after' ); ?>
<fieldset class="submit">
<legend><?php _e( 'Save Changes', 'bbpress' ); ?></legend>
<div>
<?php bbp_edit_user_form_fields(); ?>
<button type="submit" id="bbp_user_edit_submit" name="bbp_user_edit_submit"><?php bbp_is_user_home() ? _e( 'Update Profile', 'bbpress' ) : _e( 'Update User', 'bbpress' ); ?></button>
</div>
</fieldset>
</form>
if (isset($_GET['updated']) && $_GET['updated'] == 'true') {
//do this
}
You can use $_GET["updated"]. See here for more information on $_GET and the other predefined variables.
Try with POST instead of GET, because your form has POST method declared, and checking the submit button instead of a variable:
if (isset($_POST['bbp_user_edit_submit'])) {
//do this
}
if(isset($_REQUEST['updated']) && $_REQUEST['updated'] == "true"){
`//do process`
}

Categories