Woocommerce:从 form-edit-account.php 中删除必填字段

M.D*_*M.D 1 php wordpress woocommerce

我试图从 woocommerce 的 form-edit-account.php 中删除 firstname 、 lastname 和 email 字段,但是当我提交表单时,我从 woocommerce 表单验证中遇到了一些错误!如何删除此字段的验证?我搜索了很多并检查了 woocommerce hooks 文档,但我找不到有关 form-edit-account.php 表单验证的任何信息,而且所有这些都与结帐字段有关

https://docs.woocommerce.com/wc-apidocs/hook-docs.html https://docs.woocommerce.com/document/introduction-to-hooks-actions-and-filters/ https://wpthememakeover.com /2016/07/21/how-to-remove-form-fields-in-woocommerce-account-page/

Chu*_*k D 7

我刚刚自己做了这件事,它就像一个魅力。我知道你的帖子已经一年多了,但我希望它至少能帮助其他人,因为有很多反对者告诉我这是不可能的。花了我 2 个小时的反复试验(无论如何我都不是专家),这里是......

第1步

在您的子主题的functions.php 文件中,添加此代码...

//Remove required field requirement for first/last name in My Account Edit form
    add_filter('woocommerce_save_account_details_required_fields', 'remove_required_fields');

        function remove_required_fields( $required_fields ) {
            unset($required_fields['account_first_name']);
            unset($required_fields['account_last_name']);

            return $required_fields;
        }
Run Code Online (Sandbox Code Playgroud)

现在这只是删除了用户填写姓氏和名字字段的要求,它并没有从表单中删除实际字段本身,但是即使名字和姓氏字段,现在也可以提交表单留空。

第2步

要从表单中删除这两个字段,请转到/wp-content/plugins/woocommerce/templates/myaccount/includes/并将 form-edit-account.php 文件下载到您的桌面。

打开文件并注释掉或删除以下代码块(应该是第 26 行到第 33 行,但不要仅依赖于行 #s)...

<p class="woocommerce-form-row woocommerce-form-row--first form-row form-row-first">
    <label for="account_first_name"><?php esc_html_e( 'First name', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_first_name" id="account_first_name" autocomplete="given-name" value="<?php echo esc_attr( $user->first_name ); ?>" />
</p>
<p class="woocommerce-form-row woocommerce-form-row--last form-row form-row-last">
    <label for="account_last_name"><?php esc_html_e( 'Last name', 'woocommerce' ); ?>&nbsp;<span class="required">*</span></label>
    <input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="account_last_name" id="account_last_name" autocomplete="family-name" value="<?php echo esc_attr( $user->last_name ); ?>" />
</p>
Run Code Online (Sandbox Code Playgroud)

第 3 步

然后将该文件上传到您子主题下的以下文件夹...

/wp-content/themes/你的孩子主题文件夹/woocommerce/myaccount/

一切顺利!

注意

您没有将文件上传到/wp-content/themes/YOUR CHILD THEME FOLDER/woocommerce/templates/myaccount/includes/以匹配插件子文件夹。您必须使用如上所述的子文件夹字符串。这就是它必须的方式,它在文件注释中说得很好:) 如果您将其上传到子文件夹以匹配原始文件所在的插件子文件夹,则它根本无法工作。