2016-03-25 3 views
0

私はwoocommerseショップのウェブサイトで作業しており、ユーザープロフィールページ内に性別フィールドを表示する必要があります。私はそれがWordpressのユーザープロファイルページ内の性別欄が表示されてwoocommerseに性別フィールドを追加するには

add_action('show_user_profile', 'show_extra_profile_fields'); 
add_action('edit_user_profile', 'show_extra_profile_fields'); 

function show_extra_profile_fields($user) { ?> 
    <h3>Extra profile information</h3> 
    <table class="form-table"> 
     <tr> 
      <th><label for="gender">Gender</label></th> 
      <td> 
     } 
    <select name="gender" id="gender" > 
        <option value="Male" <?php selected('Male', get_the_author_meta('gender', $user->ID)); ?>>Male</option> 
        <option value="Female" <?php selected('Female', get_the_author_meta('gender', $user->ID)); ?>>Female</option> 
       </select> 
      </td> 
     </tr> 
    </table> 
<?php } 

add_action('personal_options_update', 'save_extra_profile_fields'); 
add_action('edit_user_profile_update', 'save_extra_profile_fields'); 

function save_extra_profile_fields($user_id) { 
if (!current_user_can('edit_user', $user_id)) 
    return false; 
    update_usermeta($user_id, 'gender', $_POST['gender']); 
} 

のfunctions.phpには、次のコードを追加しようとしたが、していないwoocommerceユーザープロファイルページ内。

これは可能ですか?

ありがとうございます。

答えて

2

カスタムform-edit-account.php(あなたがwoocommerce/templates/nyaccountからコピー1)ファイルに電子メールフィールドの後にこれを追加します。

// ---- Save user input into database. 
add_action('woocommerce_save_account_details', 'custom_woocommerce_save_account_details'); 
function custom_woocommerce_save_account_details($user_id) { 
    if ($user_id) { 
     if (isset($_POST['gender'])) { 
      if ($_POST['gender'] == 'Male' || $_POST['gender'] == 'Female') { 
       update_user_meta($user_id, 'gender', $_POST['gender']); 
      } 
     } 
    } 
} 

間違いなく動作します:あなたのテーマのfunctions.phpファイルにこれを追加

<p class="form-row form-row-last"> 
    <label for="gender">Gender:</label> 
    <select name="gender" id="gender"> 
     <option value="Male" <?php selected('Male', get_user_meta($user->ID, 'gender', true)); ?>>Male</option> 
     <option value="Female" <?php selected('Female', get_user_meta($user->ID, 'gender', true)); ?>>Female</option> 
    </select> 
</p> 
<div class="clear"></div> 

+0

あなたがそれに満足しているなら、他の人もそれを見つけることができるように答えを正しいものとして記入してください。 :-) - – Lutrov

+0

はい、これは完全に動作しています。非常に@ Lutrovありがとう! –

+0

こんなにありがとうございました。 – HollerTrain

0

Woocommerceのユーザープロフィールページは、標準のWordpressユーザープロフィールと同じです。何らかの形で干渉する他のプラグインを実行していない限り、ユーザーの作成方法に関係なく、表示しようとしているフォーム要素が表示されます。

ところで、それは<h2>Extra profile information</h2>であるべきです。 Wordpressはかなり前に管理者のヘッダ構造を変更しました。また、update_usermeta()は推奨されていません。代わりにupdate_user_meta()を使用してください。

+0

Hey @Lutrov私はfunctions.php内にそのコードを追加しました。だから、私はそれを見る必要があります。woocommerseのGenderフィールドは、管理パネル内のアカウントの編集ページに表示されているように、右のアカウントページを編集しますが、woocommerse内のアカウントページを編集すると表示されません。どうして私に助けてくれますか? –

+0

あなたは、自分のアカウントページの「あなたのパスワードとアカウントの詳細を編集」リンクをクリックしたことを意味しますか?もしそうなら、標準的なWoocommerceの 'form-edit-account.php'ファイルをカスタマイズして、余分な性別フィールドを追加する必要があります。 Woocommerce '/ templates/myaccount'フォルダにある' form-edit-account.php'のコピーをテーマの 'woocommerce/myaccount'フォルダに置きます。次に、カスタムバージョンを編集して性別フィールドを追加します。 – Lutrov

+0

Woocommerceテンプレートのカスタマイズについての説明は、 https://docs.woothemes.com/document/template-structure/ – Lutrov

関連する問題