我目前正在使用 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 的模板覆盖工作正常,因为我尝试在 my-account 页面中进行一些更改,并且工作得很好。希望我能得到一些帮助,谢谢!
通过重做 woocommerce_before_customer_login_form 函数,然后从头开始写下代码,然后再次运行来修复此问题。希望这对其他人有帮助!