如何在woocommerce编辑帐户页面中添加性别选项并将其用于显示特定内容

时间:2018-07-28 08:55:47

标签: php html css wordpress woocommerce

我正在寻找正确的方法,以便在woocommerce编辑帐户页面中添加广播性别选项,并使用该选项根据选项显示男性或女性的特定内容。

2 个答案:

答案 0 :(得分:0)

尝试一下。在当前活动主题的functions.php文件下面的行中添加此代码。

add_action( 'woocommerce_edit_account_form', 'add_gender_to_edit_account_form' );
function add_gender_to_edit_account_form() {
    $user = wp_get_current_user();
    ?>
        <p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
        <label for="favorite_color"><?php _e( 'Gender', 'woocommerce' ); ?>

         <input type="radio" <?php if($user->user_gender=='male') { checked="checked" <?php } ?> name="user_gender" value="male"> Male<br>
         <input type="radio" <?php if($user->user_gender=='female') { checked="checked" <?php } ?> name="user_gender" value="female"> Female<br>

    </p>
    <?php
}


add_action( 'woocommerce_save_account_details', 'save_gender_account_details', 12, 1 );
function save_gender_account_details( $user_id ) {
    // For Favorite color
    if( isset( $_POST['user_gender'] ) )
        update_user_meta( $user_id, 'user_gender', sanitize_text_field( $_POST['user_gender'] ) );
}

答案 1 :(得分:0)

很抱歉在我自己的问题上迟到了。我找到了解决方案,并希望与大家分享。

我在my-account / form-edit-account.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>

用于更新放置在functions.php中的usermeta的代码

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']);
            }
        }
    }
}

现在,我使用此用户元信息来显示基于性别的特定内容。这是代码:

<?php 
     $user_id = get_current_user_id(); 
     $key = 'gender'; 
     $single = true; 
     $gender = get_user_meta( $user_id, $key, $single ); 
     ?>
    <?php if ($gender == 'Female') { ?>
     // Content for female
    <?php } else { ?>
    // content for male
<?php } ?>