我正在寻找正确的方法,以便在woocommerce编辑帐户页面中添加广播性别选项,并使用该选项根据选项显示男性或女性的特定内容。
答案 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 } ?>