首页 > 解决方案 > 联系表格 7 需要 2 个不同字段之一

问题描述

我在 CF7 中有一个图像上传字段和一个 URL 字段,我怎样才能让用户需要使用这两个字段之一。那么选择一张图片或在 URL 字段中放置一个链接?

我已经进行了一些搜索,并且看到了一些在普通 txt 字段上执行此操作的选项,但我认为这对我不起作用,因为上传字段。

标签: wordpressvalidationcontact-form-7

解决方案


我不认为 CF7 可以开箱即用地做到这一点。您可能需要编写代码来解决此问题。

由于我不知道您的体型有多大,这可能会对您有所帮助:

https://wordpress.org/plugins/cf7-conditional-fields/ - CF 7 中条件字段的插件

https://conditional-fields-cf7.bdwm.be/conditional-fields-for-contact-form-7-tutorial/ - 教程如何使用它。

因此,使用此插件,您基本上可以创建一个下拉列表,用户首先必须在其中选择是要使用图像还是使用 URL 字段。之后,只有他的选择会弹出,他可以继续选择的选项。

如果您想进行编码,您可以将一些 JS 添加到站点并检查验证是否填写了两个字段之一。

如果插件解决了您的问题 - 很好,如果没有,请告诉我,以便我可以帮助您进行代码验证。

###编辑因为我们需要代码###

因此,要动态更改所需的功能,我发现了一个很好的帖子: 动态禁用联系表 7 字段验证

一些背景信息:CF7 在服务器端进行验证,因此在这种情况下使用 JS 或 JQuery 将无济于事。我们要做的是操纵服务器验证。如果其中一个字段填写正确,我们只是将内容放在验证的另一个字段中。

我创建了一个如下所示的表单: 在此处输入图像描述

CF7 模块中的表格如下所示:

<label> URL 
[url* url ] 

<label> Image
[file* image ]

[submit "Send"]

然后,您只需将以下代码添加到主题的 functions.php 文件中。

function alter_wpcf7_posted_data( $data ) {
if($_FILES['image']['size'] != 0) {
    $_POST['url'] = "http://fileupload.com";
}
if($_POST['url'] != "") {
    $_FILES['image']['tmp_name'] = "urlprovided";
}
return $data;
}
add_filter("wpcf7_posted_data", "alter_wpcf7_posted_data");

通常,一开始这两个字段都是空的,如果其中一个有竞争,另一个得到假数据,用户只需提供一个。

让我知道这是否有帮助。


推荐阅读