WooCommerce在另一页上更改密码表单



使用最新版本的WooCommerce,我正在尝试让更改密码表单显示在不同的页面上。问题是,将默认表单从woocommerce>模板复制到myaccount>>myaccount.php并将代码放在另一个页面上是行不通的。

这是该模板中的原始代码:

<?php

if ( ! defined( 'ABSPATH' ) ) {
exit;
}
do_action( 'woocommerce_before_edit_account_form' ); ?>
<form class="woocommerce-EditAccountForm edit-account" action="" 
method="post">
<?php do_action( 'woocommerce_edit_account_form_start' ); ?>
<p class="woocommerce-form-row woocommerce-form-row--first form-row form-
row-first">
    <label for="account_first_name"><?php _e( 'First name', 'woocommerce' ); 
?> <span class="required">*</span></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--text 
input-text" name="account_first_name" id="account_first_name" value="<?php 
echo esc_attr( $user->first_name ); ?>" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--last form-row form-row-
last">
    <label for="account_last_name"><?php _e( 'Last name', 'woocommerce' ); ?
> <span class="required">*</span></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--text 
 input-text" name="account_last_name" id="account_last_name" value="<?php 
 echo esc_attr( $user->last_name ); ?>" />
</p>
<div class="clear"></div>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-
 wide">
    <label for="account_email"><?php _e( 'Email address', 'woocommerce' ); ?
 > <span class="required">*</span></label>
    <input type="email" class="woocommerce-Input woocommerce-Input--email 
 input-text" name="account_email" id="account_email" value="<?php echo 
 esc_attr( $user->user_email ); ?>" />
</p>
<!--<fieldset>
    <legend><?php _e( 'Password change', 'woocommerce' ); ?></legend>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-
 row-wide">
        <label for="password_current"><?php _e( 'Current password (leave 
 blank to leave unchanged)', 'woocommerce' ); ?></label>
        <input type="password" class="woocommerce-Input woocommerce-Input--
  password input-text" name="password_current" id="password_current" />
    </p>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-
  row-wide">
        <label for="password_1"><?php _e( 'New password (leave blank to leave unchanged)', 'woocommerce' ); ?></label>
        <input type="password" class="woocommerce-Input woocommerce-Input--
   password input-text" name="password_1" id="password_1" />
    </p>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="password_2"><?php _e( 'Confirm new password', 
 'woocommerce' ); ?></label>
        <input type="password" class="woocommerce-Input woocommerce-Input--
  password input-text" name="password_2" id="password_2" />
    </p>
</fieldset>-->
<div class="clear"></div>
<?php do_action( 'woocommerce_edit_account_form' ); ?>
<p>
    <?php wp_nonce_field( 'save_account_details' ); ?>
    <input type="submit" class="woocommerce-Button button" name="save_account_details" value="<?php esc_attr_e( 'Save changes', 'woocommerce' ); ?>" />
    <input type="hidden" name="action" value="save_account_details" />
</p>
<?php do_action( 'woocommerce_edit_account_form_end' ); ?>

所以我的问题是如何在单独的页面中仅显示此代码内容:

<legend><?php _e( 'Password change', 'woocommerce' ); ?></legend>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-
row-wide">
        <label for="password_current"><?php _e( 'Current password (leave 
blank to leave unchanged)', 'woocommerce' ); ?></label>
        <input type="password" class="woocommerce-Input woocommerce-Input--
 password input-text" name="password_current" id="password_current" />
    </p>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-
 row-wide">
        <label for="password_1"><?php _e( 'New password (leave blank to 
 leave unchanged)', 'woocommerce' ); ?></label>
        <input type="password" class="woocommerce-Input woocommerce-Input--
 password input-text" name="password_1" id="password_1" />
    </p>
    <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-
 row-wide">
        <label for="password_2"><?php _e( 'Confirm new password', 
 'woocommerce' ); ?></label>
        <input type="password" class="woocommerce-Input woocommerce-Input--
 password input-text" name="password_2" id="password_2" />
    </p>
</fieldset>

提前感谢!

如果我要这样做,我会小心翼翼地取出该表单,然后将其放在侧边栏中的另一个自定义页面模板上或其他东西上,然后将该模板用于您希望它显示的页面。

问题是,就像Woo经常发生的那样,有时每当WordPress运行Woo操作时,例如 <?php do_action( 'woocommerce_edit_account_form_start' ); ?>,它可能是拉取有助于布局的 HTML,或者在某些奇怪的情况下甚至在 Javascript 中加载。您将希望提取所有"多余"的表单信息,使其具有功能,然后在保持功能的同时

尽可能剔除部分。

希望对您有所帮助!

最新更新