如何创建符合特定要求的Contact Form 7表单?求function.php示例代码
嘿,别慌!作为新手遇到Contact Form 7的文件上传问题太正常了,我一步步给你捋清楚怎么搞定这个符合所有要求的会员专属表单~
一、先搞定PSD和AI文件格式支持
Contact Form 7默认的允许文件类型里没有.psd和.ai,所以得手动把它们加到白名单里。你需要把下面这段代码添加到你的主题functions.php文件里:
// 为Contact Form 7添加PSD和AI文件类型支持 add_filter( 'wpcf7_acceptable_file_types', 'custom_wpcf7_acceptable_file_types' ); function custom_wpcf7_acceptable_file_types( $file_types ) { // 注册PSD和AI对应的MIME类型 $file_types['psd'] = 'image/vnd.adobe.photoshop'; $file_types['ai'] = 'application/postscript'; return $file_types; }
👉 新手操作提示:
- 你可以在WordPress后台「外观」→「主题编辑器」里找到当前主题的
functions.php(注意选对当前使用的主题) - 编辑前一定要备份这个文件!万一写错代码,直接替换备份文件就能恢复
- 或者用FTP工具连接服务器,找到
wp-content/themes/你的主题名/functions.php来编辑
二、创建符合所有要求的联系表单
接下来我们直接做满足你所有需求的表单:
1. 新建/编辑Contact Form 7表单
在后台「联系」→「添加新」,或者编辑已有的表单,把下面的示例代码粘贴进去(你可以根据自己的需求修改标签文字):
<label> 你的姓名 * [text* your-name] </label> <label> 你的邮箱 * [email* your-email] </label> <label> 上传设计文件(仅支持.psd/.ai,单文件最大10MB,可多选) * [file* your-files limit:10240 filetypes:psd|ai multiple] </label> <label> 留言内容 [textarea your-message] </label> [submit "提交表单"]
代码参数解释(敲黑板!):
[file* your-files]:*表示这个字段是必填项,your-files是字段的名称(可以自定义)limit:10240:限制单文件最大10MB(因为1MB=1024KB,所以10MB就是10240KB,你可以改成自己需要的数值,比如20480就是20MB)filetypes:psd|ai:只允许上传这两种格式,竖线|用来分隔不同格式multiple:允许同时选择多个文件上传
2. 设置仅网站会员可填写表单
有两种简单的方法实现这个需求,选你觉得方便的就行:
方法1:把表单放在会员专属页面
- 新建一个页面,在页面右侧「发布」模块的「可见性」里选择「私有」,这样只有登录用户能看到这个页面
- 或者如果你用了会员插件(比如Members),可以直接设置页面权限为「仅登录用户可见」
方法2:用代码判断用户登录状态(更灵活)
如果你想让表单在公共页面只对会员显示,非会员看到登录提示,可以把下面这段代码也加到functions.php里:
// 创建会员专属表单短代码 add_shortcode( 'member_only_contact_form', 'member_only_contact_form_shortcode' ); function member_only_contact_form_shortcode() { if ( is_user_logged_in() ) { // 把这里的短代码换成你自己的CF7表单短代码(在CF7表单编辑页能看到) return do_shortcode( '[contact-form-7 id="123" title="会员专属设计表单"]' ); } else { // 非会员看到的提示,你可以自定义文字 return '<p>你需要先<a href="' . wp_login_url( get_permalink() ) . '">登录账号</a>才能上传设计文件哦~</p>'; } }
然后在你想放表单的页面里,直接插入短代码[member_only_contact_form]就可以了!
三、额外注意事项(避免上传失败)
有时候即使设置对了,还是上传失败,大概率是主机的PHP限制:
- 检查主机的
php.ini文件里的upload_max_filesize和post_max_size值,要大于你设置的文件大小(比如你设10MB,这两个值至少要10MB以上,建议设20MB) - 如果不会改,直接联系你的主机服务商,让他们帮忙调整就行
最后记得测试一下:用登录的会员账号上传psd/ai文件,再用未登录的账号访问页面,确认表单是否只对会员显示~
内容的提问来源于stack exchange,提问作者furkan
相关产品推荐
相关产品推荐

