默认安装的WooCommerce登录页面和注册页面在同一个页面,如何分离?
最重要的一步就是保留WooCommerce的【我的账户】不动,俺在实验的时候,删除了这个,用了主题安装的My Accout,你别这样做,会后悔的。
剩下的就是复制粘贴了,下面一大堆粘贴到主题的functions.php,要是不知道这个文件在哪,打屁屁!
add_shortcode( 'wc_reg_form_bbloomer', 'bbloomer_separate_registration_form' ); function bbloomer_separate_registration_form() { if ( is_user_logged_in() ) return '<p>You are already registered</p>'; ob_start(); do_action( 'woocommerce_before_customer_login_form' ); $html = wc_get_template_html( 'myaccount/form-login.php' ); $html = mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'); $dom = new DOMDocument(); $dom->encoding = 'utf-8'; $dom->loadHTML( $html ); $xpath = new DOMXPath( $dom ); $form = $xpath->query( '//form[contains(@class,"register")]' ); $form = $form->item( 0 ); echo $dom->saveXML( $form ); return ob_get_clean(); } /** * @snippet WooCommerce User Login Shortcode * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 7 */ add_shortcode( 'wc_login_form_bbloomer', 'bbloomer_separate_login_form' ); function bbloomer_separate_login_form() { if ( is_user_logged_in() ) return '<p>You are already logged in</p>'; ob_start(); do_action( 'woocommerce_before_customer_login_form' ); woocommerce_login_form( array( 'redirect' => wc_get_page_permalink( 'myaccount' ) ) ); return ob_get_clean(); } /** * @snippet Redirect Login/Registration to My Account * @how-to Get CustomizeWoo.com FREE * @author Rodolfo Melogli * @compatible WooCommerce 7 */ add_action( 'template_redirect', 'bbloomer_redirect_login_registration_if_logged_in' ); function bbloomer_redirect_login_registration_if_logged_in() { if ( is_page() && is_user_logged_in() && ( has_shortcode( get_the_content(), 'wc_login_form_bbloomer' ) || has_shortcode( get_the_content(), 'wc_reg_form_bbloomer' ) ) ) { wp_safe_redirect( wc_get_page_permalink( 'myaccount' ) ); exit; } }
然后呢,建立登录注册页面,分别粘贴短代码就完了:
在注册页面上使用 [wc_reg_form_bbloomer] 短代码
在登录页面上使用 [wc_login_form_bbloomer] 短代码
用户注册后如何能够自动登录,而不是再登录一遍?
// 用户注册成功后自动登录 function auto_login_new_user($user_id){ wp_set_current_user($user_id); wp_set_auth_cookie($user_id); // 设置调转页面 wp_redirect('/'); exit; } add_action('user_register','auto_login_new_user');