带有 woocommerce_before_customer_login_form 的短代码不会引用覆盖的模板文件

问题描述 投票:0回答:1

我目前正在使用 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 页面中进行一些更改,并且工作得很好。希望我能得到一些帮助,谢谢!

php wordpress woocommerce shortcode
1个回答
0
投票

通过重做 woocommerce_before_customer_login_form 函数,然后从头开始写下代码,然后再次运行来修复此问题。希望这对其他人有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.