如何将性别字段添加到WooCommerce编辑帐户

如何将性别字段添加到WooCommerce编辑帐户,woocommerce,Woocommerce,我在一家WooCommerce商店网站上工作,需要在用户配置文件页面中显示性别字段。我尝试将以下代码添加到functions.php add_action( 'show_user_profile', 'show_extra_profile_fields' ); add_action( 'edit_user_profile', 'show_extra_profile_fields' ); function show_extra_profile_fields( $user ) { ?>

我在一家WooCommerce商店网站上工作,需要在用户配置文件页面中显示性别字段。我尝试将以下代码添加到functions.php

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'] );
 }
它显示Wordpress用户配置文件页面中的性别字段,但不显示woocommerce用户配置文件页面中的性别字段

这可能吗


提前感谢。

Woocommerce用户配置文件页面与标准Wordpress用户配置文件相同,因此除非您正在运行以某种方式干扰的其他插件,否则无论用户是如何创建的,您尝试显示的表单元素都将出现


顺便说一下,它应该是额外的配置文件信息。Wordpress在相当长的一段时间前已经改变了管理员头结构。此外,不推荐使用update_usermeta。改用update\u user\u meta。

Woocommerce用户配置文件页面与标准Wordpress用户配置文件相同,因此除非您正在运行以某种方式干扰的其他插件,否则无论用户是如何创建的,您试图显示的表单元素都将出现


顺便说一下,它应该是额外的配置文件信息。Wordpress在相当长的一段时间前已经改变了管理员头结构。此外,不推荐使用update_usermeta。改为使用update\u user\u meta。

在自定义表单-edit-account.php中的电子邮件字段后添加此项,即从woocommerce/templates/nyaccount文件复制的电子邮件字段:


这肯定会奏效。

在自定义表单-edit-account.php中的电子邮件字段后添加此项,即从woocommerce/templates/nyaccount文件复制的表单:


这肯定会奏效。

Hey@Lutrov我在functions.php中添加了这段代码。所以我应该在WooCommerce编辑账户页面中看到性别字段,就像我在管理面板编辑账户页面中看到的一样,但在WooCommerce编辑账户页面中我看不到它。你能帮我看看原因吗?你是说当用户点击我的账户页面中的“编辑密码和账户详细信息”链接时?如果是这样,您需要定制标准的Woocommerce form-edit-account.php文件,并将额外的性别字段添加到该文件中。在Woocommerce/templates/myaccount文件夹中复制form-edit-account.php,并将其放入主题的Woocommerce/myaccount文件夹中。然后编辑自定义版本以包含您的性别字段。有关自定义Woocommerce模板的说明,请参见此:您还应查看Woocommerce\u编辑\u帐户\u表单和Woocommerce\u保存\u帐户\u详细信息挂钩。更多信息请参见:是的,我尝试将wocommerce文件夹放在我的模板文件中,我看到添加了新字段,但我不知道如何将该字段保存到DB?嘿@Lutrov我在functions.php中添加了该代码。所以我应该在WooCommerce编辑账户页面中看到性别字段,就像我在管理面板编辑账户页面中看到的一样,但在WooCommerce编辑账户页面中我看不到它。你能帮我看看原因吗?你是说当用户点击我的账户页面中的“编辑密码和账户详细信息”链接时?如果是这样,您需要定制标准的Woocommerce form-edit-account.php文件,并将额外的性别字段添加到该文件中。在Woocommerce/templates/myaccount文件夹中复制form-edit-account.php,并将其放入主题的Woocommerce/myaccount文件夹中。然后编辑自定义版本以包含您的性别字段。有关自定义Woocommerce模板的说明,请参见此:您还应查看Woocommerce\u编辑\u帐户\u表单和Woocommerce\u保存\u帐户\u详细信息挂钩。更多信息请参见此:是的,我尝试将wocommerce文件夹放在模板文件中,我看到添加了新字段,但我不知道如何将该字段保存到DB?如果您对此感到满意,请将答案标记为正确,以便其他人也能找到它?:--是的,这是完美的工作。非常感谢你@Lutrov!如果您对此感到满意,请您将答案标记为正确,以便其他人也能找到它是的,这是完美的工作。非常感谢你@Lutrov!
<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>
// ---- 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']);
            }
        }
    }
}