如何将 HTML5“必需”属性添加到 woocommerce_form_field

2023-12-29

我目前正在我的 WordPress 主题中开发 WooCommerce 注册页面,并添加了一个钩子供用户接受条款和条件 -请参阅添加的 PHP 代码。

HTML5为输入字段提供了一个超级有用的功能,就是在标签中添加“必填”,新浏览器会自动提示警告。我已经设法对所有其他输入字段执行此操作,但我无法修改此特定 PHP 数组以输出<input>标签与'required'属性。

HTML 输出需要如下所示:

<input required type="checkbox" class="input-checkbox woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="privacy_policy_reg" id="privacy_policy_reg" value="1">

然而,目前基于以下 PHP 代码生成的输出是:

<input type="checkbox" class="input-checkbox woocommerce-form__input woocommerce-form__input-checkbox input-checkbox" name="privacy_policy_reg" id="privacy_policy_reg" value="1">

注意:该钩子已经有 PHP 验证检查,但只有在按下注册按钮后才会进行,而 HTML5 检查会立即生效。尽管如此,我想保留 PHP 验证检查,以防浏览器无法读取 HTML5 检查。

谁能帮助我如何修改 PHP 数组代码以使标签包含“required”属性?

我非常感谢任何帮助!

最好的, 大卫

// CREATE CHECKBOX AND LABEL

add_action( 'woocommerce_register_form', 'bbloomer_add_registration_privacy_policy', 11 );
   
function bbloomer_add_registration_privacy_policy() {
 
woocommerce_form_field( 'privacy_policy_reg', array(
   'type'          => 'checkbox',
   'class'         => array('form-row privacy'),
   'label_class'   => array('woocommerce-form__label woocommerce-form__label-for-checkbox checkbox'),
   'input_class'   => array('woocommerce-form__input woocommerce-form__input-checkbox input-checkbox'),
   'required'      => true,
   'label'         => 'I\'ve read and accept the <a href="/privacy-policy">Privacy Policy</a>',
));
  
}
  
// SHOW ERROR AFTER CLICKING SUBMIT BUTTON IF USER HAS NOT CHECKED CHECKBOX
   
add_filter( 'woocommerce_registration_errors', 'bbloomer_validate_privacy_registration', 10, 3 );
  
function bbloomer_validate_privacy_registration( $errors, $username, $email ) {
if ( ! is_checkout() ) {
    if ( ! (int) isset( $_POST['privacy_policy_reg'] ) ) {
        $errors->add( 'privacy_policy_reg_error', __( 'Privacy Policy consent is required!', 'woocommerce' ) );
    }
}
return $errors;
}

UPDATE

  1. 根据这里的其他问题:添加产品时,如何在 woocommerce 产品页面中设置自定义字段值(强制) https://stackoverflow.com/questions/23821420/how-can-i-make-custom-field-value-required-compulsory-in-woocommerce-product我已经(不成功)尝试过:
'custom_attributes' => array( 'required' => 'required' ),
  1. 根据建议,我已经尝试过:
required => "required"

required => "required"

如果你真的想改变<input.. to <input required..然后你可以添加woocommerce_form_field_checkbox过滤钩。

事实是,在哪里HTML 代码已创建 https://github.com/woocommerce/woocommerce/blob/d7b2207e75eedb4fb89249b81dcd42133e8ca616/includes/wc-template-functions.php#L2799

(此代码复制自wc-template-functions.php https://github.com/woocommerce/woocommerce/blob/d7b2207e75eedb4fb89249b81dcd42133e8ca616/includes/wc-template-functions.php第 2799 行)

<input type="' . esc_attr( $args['type'] ) . '" class="input-checkbox ' . esc_attr( implode( ' ', $args['input_class'] ) ) . '" name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" value="1" ' . checked( $value, 1, false ) . ' /> ' . $args['label'] . $required . '</label>';

存在将参数添加到现有的选项$args但不是额外的HTML代码到HTML itself


因此,如果您将以下代码添加到现有代码中,您可以选择调整HTML输出从$field

  • 字符串替换 https://www.php.net/manual/en/function.str-replace.php- 用替换字符串替换所有出现的搜索字符串
function filter_woocommerce_form_field_checkbox( $field, $key, $args, $value ) {
    // Based on key
    if ( $key == 'privacy_policy_reg' ) {
        $field = str_replace( '<input', '<input required', $field );
    }
    
    return $field;
}
add_filter( 'woocommerce_form_field_checkbox', 'filter_woocommerce_form_field_checkbox', 10, 4 );

有关的:我应该如何更改 woocommerce_form_field HTML 结构? https://stackoverflow.com/questions/63992290/how-should-i-change-the-woocommerce-form-field-html-structure

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 HTML5“必需”属性添加到 woocommerce_form_field 的相关文章

  • 准备好的语句需要 0 个参数,给定 1 个参数..,使用 php 手册示例 [重复]

    这个问题在这里已经有答案了 我直接从 php 手册示例中获取了这个 它几乎与我需要的相同 但我仍然收到此错误 有人可以告诉我我错过了什么吗 stmt link gt prepare SELECT obitBody Photo FROM tn
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • Laravel 5.1 中的VerifyCsrfToken.php 第 53 行:(Firefox 浏览器)中出现 TokenMismatchException?

    我试图找出为什么会出现这个错误 即使它是全新安装的 我在我的项目中遇到了这个错误 所以我用谷歌搜索 没有一个答案对我有用 所以我创建了新项目并复制了所有控制器 视图和模型 几个小时后工作正常 再次出现令牌不匹配错误 为什么在 laravel
  • 私人聊天系统MYSQL查询显示发送者/接收者的最后一条消息

    在这里我延伸一下我之前的问题 私人聊天系统MYSQL查询ORDERBY和GROUPBY https stackoverflow com questions 10929366 private chat system mysql query o
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • 运行 Composer 返回:“无法打开输入文件:composer.phar”

    我是 symfony2 和阅读新手symblog http tutorial symblog co uk tutorial parts 在第三章中 在尝试使用数据装置时 我尝试了以下命令 php composer phar update 但
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • Symfony2中如何获取所有post参数? [复制]

    这个问题在这里已经有答案了 我想获取a的所有post参数symfony http symfony com Form I used all parameter this gt get request gt getParameterHolder
  • php - 我应该加密电子邮件地址吗?

    当用户注册时 我应该将他们的电子邮件按原样存储在数据库中还是对其进行哈希处理 我希望稍后能够解密 那么我应该使用 md5 吗 谢谢你 No md5 is 单向哈希函数 http en wikipedia org wiki Cryptogra
  • php 中的简单授权/登录功能

    我希望第一次实现用户登录到我的网站 我很高兴构建自己的解决方案 或者实现一些开源的东西 但是到目前为止 在我的搜索中没有任何包是明显的选择 同样 我完全意识到 作为一名中级 php 程序员 如果我推出自己的解决方案 并真正敞开大门 我很可能
  • 使用 PHP 的 Google Glass GDK 身份验证

    我正在尝试点击此链接来验证 GDK 中的用户 https developers google com glass develop gdk authentication https developers google com glass de
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • 如何在php中使用preg添加html属性

    我正在寻找在 php 中编写一个脚本来扫描 html 文档并根据它找到的内容向元素添加新标记 更具体地说 我是扫描文档并为每个元素搜索CSS标记 float right left 如果找到它 它会添加align right left 基于它
  • 为什么 PHP 中不允许“传统”类型提示?

    刚刚发现类型提示 http php net manual en language oop5 typehinting phpPHP 中允许 但不适用于整数 字符串 布尔值或浮点数 为什么 PHP 不允许对整数 字符串等类型进行类型提示 从 P

随机推荐

  • 如何在网络浏览器中运行java小程序

    我有一个 java SE 项目或者你可以说applet 但我想在网络浏览器中运行这个小程序 这怎么可能 我需要复制jar文件类似这样的东西我才知道 但可能的解决方案是什么 本教程 http www tutorialspoint com ja
  • 正则表达式模式中的 concat 变量

    我使用这个正则表达式 str asd34rgr888gfd98 var p str match d 2 alert p 0 但我不明白如何使用变量作为量词 那就是这样写 var number 2 var p str match d numb
  • 是否有技术原因更喜欢使用 logback 而不是 log4j?

    新项目是否应该使用 logback 而不是 log4j 作为日志框架 或者换句话说 logback 比 log4j 更好吗 将 SLF4J logback 的 功能 放在一边 您应该使用 SLF4J Logback 进行日志记录 它提供了一
  • 如何生成具有多个值的直方图动画

    迭代更新非常慢 每次只有n 3 但我的数据有10000个元素 就像 它尝试更新每一帧 n 1 n 2 n 3 但 hist 函数确实很耗电 我不知道是否有任何方法可以跳过帧 例如从 n 1 直接跳到 n 500 和 n 1000 impor
  • 使用本地包

    我在本地目录中有一个 Elm 包 源代码 所有构建工件 我想从另一个 Elm 包中使用它 而不发布库 所以我的目录设置如下所示 my lib elm package json my app elm package json 首先 跑步elm
  • 如何访问 Google 日历的事件时间?

    我正在使用 Google Calendar API 和 Google Client Library for Python 我使用的代码给出了给定日期范围内但缺少时间的事件列表 我想要一个给出事件列表以及时间的输出 这是代码 page tok
  • 在保持某些变量不变的情况下最小化函数

    我有一个形式的函数 def tmp x n R s a T x 0 x 1 x 2 x 3 经过一长段计算后 它返回一个浮点数 我需要最小化这个函数 为此我使用了 scipy optimize minimize minimize tmp 0
  • 以编程方式,如何识别信标属于 Eddystone 还是 iBeacon?

    我创建了一个 Android 应用程序来使用蓝牙 LEscanner 扫描 BLE 现在我需要我的应用程序来识别信标是否属于 iBeacon 还是 Eddystone 到目前为止 我通过解析AD帧成功确定了ibeacon的UUID Majo
  • 如何使用 render 方法为 VueJS 组件指定分隔符?

    我有一个vuejs webpack simple项目生成通过vue cli 但是 我在使用时无法设置分隔符render函数来渲染我的App成分 new Vue delimiters el app render h gt h App 如果我不
  • SQLAlchemy PyODBC MS SQL Server DSN-less 连接

    通过 pyodbc 使用 python 2 7 和 MS odbc 驱动程序 我的连接字符串如下所示 mssql pyodbc myuser mypass serverip instancename driver ODBC Driver 1
  • 如果未找到单行,则返回默认值

    我有以下 select 语句来获取流的下一个计划项目 如果没有匹配的行 我希望它返回默认值 这是我正在使用的 SQL SELECT file FROM show schedule WHERE channel 1 AND start time
  • Android studio 中的日期和时间(Kotlin 语言)

    我和我的朋友正在 android studio 中使用 Kotlin 开发一个应用程序 我们在应用程序开发方面还很陌生 但我们拥有良好的编程技能 对于我们的功能之一 我们需要获取当前日期和时间 我们尝试了各种导入和方法 但似乎都不适用于低于
  • Html 文件作为 AngularJS 指令中 Bootstrap 弹出窗口中的内容

    我有一个 Angular 指令来处理 Bootstrap 弹出窗口 如下面的代码所示 在我的指令中 我将弹出窗口内容设置为 HTML 字符串 我认为这很难看 我想要做的是使用 template html 文件而不是 HTMLstring 这
  • 浏览工作簿的所有用户表单

    我想编写一个 VBA 程序来打印工作簿中所有用户窗体的名称 例如 如果工作簿有一个名为的用户窗体frmHello 我只想打印UserForm frmHello 有谁知道哪个集合是关于用户表单的 以及如何查找用户表单的名称 这对我有用 Dim
  • 如何从 Rust 访问在 C 中声明的以零结尾的函数指针数组?

    我有以下带有以零结尾的函数指针数组的 C 代码 include
  • 为什么 Rebol 中的“上下文”和“对象”功能不同,但本质上是相同的?

    一方面我们有 gt gt source object object make function Defines a unique object blk block Object words and values make object ap
  • 将列表传递给 RESTful Web 服务

    有没有办法将列表传递给 Jersey 中的 RESTFul Web 服务方法 像 PathParam list 列表列表之类的东西 希望这对您有帮助 Java代码 import java util List Path customers p
  • 如何比较 Serial.read() 中的字符串?

    我在下面有这段代码 是我从哪里得到的这个论坛 http forum arduino cc index php topic 204484 0 html我遵循了这一点 它对我不起作用 但他们声称代码很好 我已经尝试了几种字符串比较方法 例如st
  • 多站点登录 ala Google

    不确定标题是否适合这个问题 但我想不出任何其他方式来表达它 假设您想要创建多个不同的 Web 应用程序 但您希望登录一个应用程序的用户能够直接访问您的其他应用程序而无需重新登录 假设他们也有权查看其他应用程序 如果我没记错的话 如果您登录了
  • 如何将 HTML5“必需”属性添加到 woocommerce_form_field

    我目前正在我的 WordPress 主题中开发 WooCommerce 注册页面 并添加了一个钩子供用户接受条款和条件 请参阅添加的 PHP 代码 HTML5为输入字段提供了一个超级有用的功能 就是在标签中添加 必填 新浏览器会自动提示警告