标签 Gravity Forms 下的所有文章

WordPress前端,自制拖放区域上传文件的轮子

上个月写过一篇WordPress通过Rest API自定义附件上传接口,那篇文章主要介绍了如何打通前后端,利用Rest API保存“抓取”已知URL的文件。不过在更多的情况下,我们还是需要通过自己的表单上传文件。正好这个月有个项目,有个表单需要拖放文件到指定区域里,提交表单的时候上传文件。如果我用Gravity Forms给的文件上传域,它只有原生的点击选取本地的文件组件,并没有拖放选取文件的组件,所以这里就需要造一个轮子了。

先说结果,最后实现出来是这样子的:
WordPress前端,自制拖放区域上传文件的轮子

文件拖到区域上方,区域会变色;拖入后区域内显示文件名,判断文件格式和尺寸是否合规;点击清除,会重置区域。


查看详细 »

让国内用户也能在Gravity Forms中开启谷歌验证码Google reCAPTCHA功能

我一直认为Google reCAPTCHA是最好的表单验证插件,没有之一。
在Gravity Forms中开启谷歌验证码Google reCAPTCHA功能

Gravity Forms作为WordPress界最强的表单插件之一,也提供了免费的表单验证功能,它接入的也是Google reCAPTCHA,可惜国内用户是无法直接使用的。因为谷歌API在原有域名下均已被阻断,但是部分有用的服务比如验证码、字体等,其实是有其他备用域名可以使用的,而Gravity Forms似乎并不太关心我们国内用户,所以就没有提供采用备用域名接口的选项,需要自己手动调整。 查看详细 »

给Gravity Forms表单添加定制级联菜单,中国城市选择选项

Gravity Forms(重力表单插件,本文简称GF)是一款公认十分强大的WordPress表单插件,不过其强大之处在我看来并不是选项多,操作简单等常规“小儿科”特性,这一点其实很多其他的表单插件都能做到。GF强大之处在于它提供了十分周全的API和文档让开发者能做进一步开发,满足用户更复杂的业务需求。这一点恐怕没有其他竞品可以与之相比。

表单插件虽然多,提供级联下拉菜单的表单插件恐怕就很少了。GF本身也没有提供,不过用户可以通过逻辑功能绕道在后台实现简单的级联菜单,方法是先放入一个一级菜单,再放入N个二级菜单,二级菜单默认全部隐藏,根据一级菜单的选项来显示对应二级菜单。这种实现方法比较直观,但如果一级菜单选项很多,那添加和维护就很吃力了。于是我尝试用GF提供的API自己定制一个级联菜单,选择中国所有34省级行政区下的对应城市/区。总共34个一级选项,五百多个城市子选项,这要在后台一一添加可真的是非常麻烦了。

先上结果图:
给Gravity Forms表单添加定制级联菜单,中国城市选择选项
查看详细 »

给Gravity Forms表单的电话号码增加11位手机号码格式

Gravity Forms提供了强大的表单系统,但是它的电话号码格式却没有11位手机号码的格式,虽然我们可以用International这个选项代替(就是不限制格式),但终归不够完美。查了一下官方文档,把这个需求给填上吧。

直接上代码:

add_filter( 'gform_phone_formats', 'brain1981_phone_format' );
function brain1981_phone_format( $phone_formats ) {
	$phone_formats['china mobile'] = array(
		'label'       => '手机号码',
		'mask'        => false,
		'regex'       => '/^1(?:3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8\d|9\d)\d{8}$/', //手机号码正则
		'instruction' => "11位手机号码",
	);
	return $phone_formats;
}

查看详细 »

Gravity Forms表单使用WPML和qTranslate的多语言解决方案

Gravity Forms在国外是一款非常流行的收费表单插件,它的强大之处一两句话是概括不完的,要体会这款插件,可以去他的Demo演示站(demo.gravityforms.com)体会。这个插件帮我不知道省了多少开发时间,所以忍不住再次强力推荐。这样一款优秀插件,本身却并未提供多语言功能。在应用了WPML或qTranslate的多语言网站上,我们可以选择两款“第四方”插件,使多语言插件分别支持Gravity Forms。

首先来说个简单的 – 免费的Qtranslate。原作者停止更新qTranslate后,我们就用qTranslate-X代替。qTranslate是通过这样的语言标签:“<!–en:–><!–:–>”,来实现多语言的。在Gravity Forms表单中使用这样的语言标签,在前台会把这些标签当作文本一起输出。通过插件“qTranslate support for GravityForms”,可以直接让qTranslate-X支持Gravity Forms中填写的语言标签,在前端输出正确的语言文本。 查看详细 »

WordPress以及表单插件Gravity Forms和Contact Form 7无法发送邮件问题解决

这其实还是一个Win主机上用WordPress建站的常见问题。
起初我发现用Gravity Forms建立的表单无论如何都不能发送提醒邮件,遂尝试了N种方法,走了N多的弯路。然后惊讶的发现我的Wordpress本身居然也不能发送邮件,也就是找回密码等功能失效。

1. 百度解决方案,凡是提到Gravity Forms的中文网页都只是浅显的在介绍这款插件而已。对我来说百度果然还是不够用的。
2. 于是爬梯子看Google,先是找到Gravity Forms官方网站,里面也是一大堆不能发送邮件的话题。总结下来有这样几类:
a) 自动发送的邮件被系统当成垃圾邮件处理了。我查了下自己的垃圾箱,没有。
b) 服务器不支持PHP的mail()函数。检查结果居然正是如此。PHP基础非常差的我只知道在Win主机下用mail()不靠谱,大量的替代方案是用一个叫“WP Mail SMTP”的插件代替。 查看详细 »