【问题标题】:How to add gender option in woocommerce edit account page and use it for showing specific content如何在 woocommerce 编辑帐户页面中添加性别选项并将其用于显示特定内容
【发布时间】:2018-07-28 08:55:47
【问题描述】:

我正在寻找在 woocommerce 编辑帐户页面中添加无线电性别选项的正确方法,并将其用于根据选项显示特定内容,即男性或女性。

【问题讨论】:

  • 希望您至少尝试自己编写代码。我建议您通过 Google 或通过搜索 SO 进行一些额外的研究,然后进行尝试。如果您仍然遇到问题,请返回您的代码并在原始问题的正文中说明您尝试过的内容。

标签: php html css wordpress woocommerce


【解决方案1】:

试试这个。在下面添加您当前活动主题的 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'] ) );
}

【讨论】:

    【解决方案2】:

    抱歉,我自己的问题迟到了。我找到了解决方案并愿意分享。

    我在 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 中用于更新用户元的代码

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

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 2021-04-09
      • 2020-08-03
      • 2020-08-07
      相关资源
      最近更新 更多