文章最后更新时间:
前言
相信使用wordpress建站的朋友,都知道插件装多了会拖慢网站速度,所以在能不用插件的情况下,尽量不用插件实现。
微信公众号当前是每个用户都在使用的功能,而使用wordpress程序的站长会希望把自己的网站连接到微信公众号。连接后通过公众号访问网站的内容。那么WordPress网站连接微信公众号除了安装WordPress插件外,还有哪些技巧呢?
现在的微信机器人 5.0 版本对服务器要求较高,只支持 Linux 服务器,PHP 要求 7.2 ,服务器支持 Memcached。还需要额外安装插件WPJAM,看到这里可能有很多小站长只能望而却步了。
这里为大家介绍的是只用简单代码把WP和公众号连接的方法,不用插件操作简单,缺点功能相对较少,连接后可以实现公众号通过关键字调取网站内容,搜索文章,对于许多站长来说已经足够用了,让你的公众号不在缺少内容。
安装方法:
- 在你网站根目录下创建一个名为weixin.php的文件,将以下代码放进去。
- 将代码中的数据库链接信息,改成你WordPress的数据库链接信息。
- 默认的token为weixin,可修改为自己的token,需要与微信公众号后台的token对应。
- 进入微信公众号平台-基本配置-服务器配置-设置里面设置对接信息,域名地址是http://你的域名/weixin.php
- 提交后就可以实现wordpress网站与微信公众号的对接功能了。
此代码只是简单连接到微信公众号,并不支持后台操作功能。
<?php
// 上传到根目录,公众号验证
$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];
// 此处添加 TOKEN 值需要与公众号值相同
$token = 'weixin';
$signature = $_GET['signature'];
$array = array($timestamp, $nonce, $token);
sort($array);
// 拼接数据并 sha1 加密
$tmpstr = implode('', $array);
$tmpstr = sha1($tmpstr);
// 数据验证
if ($tmpstr == $signature && $_GET['echostr']) {
echo $_GET['echostr'];
exit;
} else {
responseMsg();
}
function responseMsg() {
$postArr = file_get_contents('php://input');
$postObj = simplexml_load_string($postArr);
if (strtolower($postObj->MsgType) == 'event') {
if (strtolower($postObj->Event) == 'subscribe') {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$MsgType = 'text';
$content = "欢迎关注\n请直接回复关键字检索文章\n也可直接进入<a href='https://lzphy.top' target='_blank' rel='nofollow noopener noreferrer'>氯化钠</a>";
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $MsgType, $content);
echo $info;
}
}
if (strtolower($postObj->MsgType) == 'text') {
$postcontent = $postObj->Content;
// 检查用户输入是否为提取码
if ($postcontent == "提取码") {
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$MsgType = 'text';
$content = "pyxh";
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $MsgType, $content);
echo $info;
} else {
// 原有的数据库查询和回复逻辑
$conn = mysqli_connect('localhost', '数据库用户名', '数据库密码', '数据库名'); // 修改数据库链接信息
$stmt = $conn->prepare("SELECT * FROM wp_posts WHERE post_title LIKE? AND post_status = 'publish' ORDER BY post_date DESC ");
$searchTerm = "%". $postcontent. "%";
$stmt->bind_param("s", $searchTerm);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_all(MYSQLI_ASSOC);
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
// 如果查询结果超过最大数量
$maxResults = 5;
if (count($row) > $maxResults) {
// 返回搜索页面链接
$MsgType = 'text';
$searchUrl = 'https://lzphy.top/?cat=&s='. urlencode($postcontent);
$content = '符合关键字的文章:<a href="'. $searchUrl. '" >点击查看更多</a>';
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $MsgType, $content);
echo $info;
} else if (count($row) > 0 && count($row) <= $maxResults) {
// 查询结果在最大限制内,正常返回
$MsgType = 'news';
$template = '<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>%s</ArticleCount>
<Articles>';
foreach ($row as $key => $value) {
$template.= "<item>
<Title><![CDATA[". $value['post_title']. "]]></Title>
<Description><![CDATA[点击查看]]></Description>
<PicUrl><![CDATA[https://wx.qlogo.cn/mmopen/ty5fyOYL6shPVMiafmuz8Me7SvFDdTTZh7PFqSibvRoVVxhIO6rCpUELubkClxeglLsMna40sUictT54IUeb1kEgW1C3vzOnicyj/64]]></PicUrl>
<Url><![CDATA[". $value['guid']. "]]></Url>
</item>";
}
$template.= '</Articles></xml>';
$info = sprintf($template, $toUser, $fromUser, $time, $MsgType, count($row));
echo $info;
} else if (count($row) == 0) {
// 没有查询到相关文章,返回标签搜索链接
$MsgType = 'text';
$content = '暂未检索到相关文章, 你可以尝试通过标签搜索来找到相关内容。请访问:<a href="https://lzphy.top/tag/'. urlencode($postcontent). '" target="_blank">点击这里查看标签搜索结果</a>';
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $MsgType, $content);
echo $info;
} else {
$MsgType = 'text';
$content = '符合关键字的文章太多, 请多输入几个字再次检索';
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $MsgType, $content);
echo $info;
}
$stmt->close();
mysqli_close($conn);
}
}
}
?>
效果展示:
本文链接:https://lzphy.top/1156/© 版权声明
THE END
暂无评论内容