php 使用woocommerce_before_customer_login_form的短代码不会引用覆盖的模板文件

mtb9vblg  于 5个月前  发布在  PHP
关注(0)|答案(1)|浏览(57)

我目前正在使用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的模板覆盖工作正常,因为我尝试在我的帐户页面中进行一些更改,它工作得很好。希望我能得到一些帮助,谢谢!

mcdcgff0

mcdcgff01#

通过重做woocommerce_before_customer_login_form函数修复了这个问题,然后从scrath写下代码,然后再次运行它。希望这对其他人有帮助!

相关问题