2017-10-19 1 views
0

最新のWooCommerceバージョンを使用して、私はパスワード変更フォームを別のページに表示しようとしています。問題は、woocommerce> templates> myaccount> form-edit-account.phpのデフォルトフォームをコピーし、別のページにコードを配置しても機能しないことです。WooCommerce別のページにパスワードフォームを変更する

これは、そのテンプレートから元のコードです:

<?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> 

感謝!

答えて

1

これを行う場合は、そのフォームを慎重に取り出して、サイドバーなどの別のカスタムページテンプレートにドロップしてから、そのテンプレートを表示したいページに使用します。

Wooとよくあることですが、WordPressがWooアクションを実行するたびに<?php do_action('woocommerce_edit_account_form_start'); ?>、それはレイアウトを助けるHTMLを引っ張っているかもしれない、またはいくつかの奇妙なケースではJavascriptで読み込むかもしれません。すべての "過剰な"フォーム情報を取り込み、それを機能的にしてから、その機能を維持しながらできる部分を取り除きたいでしょう。

希望に役立ちます!

+0

はい、halpsですが、保存する場合は、新しいパスワードを保存すると、データはDBに更新されません。 – DrMTR

+0

Developers 'Toolsで送信されているPOST要求を見て、応答が何であるかを確認してください。エラーが発生した場合は、デバッグして、なぜ壊れているのかを知ることができます。 – plushyObject

関連する問題