WordPress集成Twilio遇阻:桌面表单发送应用链接短信求助
解决Twilio表单关联的两个核心问题
嘿,我来帮你一步步搞定这两个头疼的问题!
一、先解决JavaScript被Chrome拦截的问题
你碰到的拦截是混合内容安全限制——你的网站应该用了HTTPS协议,但你引入的jQuery用的是HTTP链接,Chrome会直接阻止这种不安全的跨协议资源加载。给你两个简单的解决方案:
方案1:改用HTTPS的jQuery链接
把代码里的jQuery引入改成HTTPS版本,而且建议换成更现代的稳定版(1.4.2实在太老了,可能有兼容性问题):<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>方案2:直接用Divi自带的jQuery
Divi主题本身已经内置了jQuery,你完全可以删掉这段jQuery引入代码,只保留后面的表单提交逻辑就行,还能避免重复加载资源浪费性能。
另外,把JS代码放在Divi的「主题选项」→「集成」→「头部」输入框里,比直接加在页面头部更稳妥,Divi会帮你处理一些兼容性细节。
二、手把手教你创建sendnotifications.php文件
别慌,PHP文件并没有你想的那么复杂,跟着我一步步来:
1. 准备Twilio依赖
首先需要Twilio的PHP开发库,新手推荐手动引入的方式:
- 去Twilio官网下载PHP库压缩包,解压后把
twilio-php文件夹上传到你的网站根目录(和后面要创建的sendnotifications.php放在同一层级)。
2. 编写PHP核心代码
打开记事本或者简单的代码编辑器(比如VS Code),复制下面的代码,然后替换成你自己的Twilio账户信息:
<?php // 引入Twilio库(如果手动上传的路径不对,要调整这里的路径) require_once 'twilio-php/src/Twilio/autoload.php'; use Twilio\Rest\Client; // 替换成你的Twilio账户SID、Auth Token和购买的发件人号码 $account_sid = '你的Twilio账户SID'; $auth_token = '你的Twilio Auth Token'; $twilio_number = '+1234567890'; // 格式是「+国家代码+号码」 // 获取表单提交的手机号(要和你表单里的input name属性对应,比如表单里是name="phone") $user_phone = $_POST['phone']; // 自定义短信内容,改成你的应用下载提示 $message_body = "你的应用下载链接:https://你的应用地址.com"; try { // 初始化Twilio客户端 $client = new Client($account_sid, $auth_token); // 发送短信 $message = $client->messages->create( $user_phone, // 用户手机号要带国家代码,比如+86138xxxxxxx array( 'from' => $twilio_number, 'body' => $message_body ) ); // 返回成功的JSON给前端 echo json_encode(array('sms_sent' => 'OK')); } catch (Exception $e) { // 返回失败的JSON echo json_encode(array('sms_sent' => 'FAILED')); // 可以把错误信息记录到服务器日志,方便排查问题 error_log('Twilio发送失败:' . $e->getMessage()); } ?>
3. 上传PHP文件到服务器
用FTP工具(比如FileZilla)或者主机控制面板的「文件管理器」,把写好的sendnotifications.php上传到网站根目录(和你的表单页面同一层级,这样前端的$.post("sendnotifications.php", ...)路径才正确)。
4. 检查表单字段
确保你HTML表单里的手机号输入框name属性是phone(和PHP里的$_POST['phone']对应),比如:
<input type="tel" name="phone" id="phone" placeholder="输入你的手机号">
三、最后测试一下
- 打开你的测试页面,按F12打开Chrome开发者工具,切换到「控制台」标签,看看有没有JS报错;
- 填写手机号提交表单,如果弹出「Message Sent」就说明成功了;如果失败,去服务器的错误日志里找原因(或者在PHP里临时加个
echo $e->getMessage();看看具体错误)。
内容的提问来源于stack exchange,提问作者Joris
相关产品推荐
相关产品推荐

