我目前正在使用WordPress,并正在创建一个自定义的主题,我成功地覆盖了旧的myaccount form-login.php文件,因为它完美地适用于我的帐户页面,但我使用了来自here的短代码,并在我的主题上使用它
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' );
$dom = new DOMDocument();
$dom->encoding = 'utf-8';
$dom->loadHTML( utf8_decode( $html ) );
$xpath = new DOMXPath( $dom );
$form = $xpath->query( '//form[contains(@class,"register")]' );
$form = $form->item( 0 );
echo $dom->saveXML( $form );
return ob_get_clean();
}
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();
}
字符串
因此,在将调用简码放在两个单独的页面后,由于某种原因,它仍然引用原始模板文件,在确认与woocommerce兼容后,我将上述代码放在functions.php文件的最后。我也很确定form-login.php的模板覆盖工作正常,因为我尝试在我的帐户页面中进行一些更改,它工作得很好。希望我能得到一些帮助,谢谢!
1条答案
按热度按时间mcdcgff01#
通过重做woocommerce_before_customer_login_form函数修复了这个问题,然后从scrath写下代码,然后再次运行它。希望这对其他人有帮助!