WordPress教程 纯代码让wordpress网站与微信公众号对接

百度已收录

文章最后更新时间:2025-01-01 10:17:23

前言

相信使用wordpress建站的朋友,都知道插件装多了会拖慢网站速度,所以在能不用插件的情况下,尽量不用插件实现。

微信公众号当前是每个用户都在使用的功能,而使用wordpress程序的站长会希望把自己的网站连接到微信公众号。连接后通过公众号访问网站的内容。那么WordPress网站连接微信公众号除了安装WordPress插件外,还有哪些技巧呢?

现在的微信机器人 5.0 版本对服务器要求较高,只支持 Linux 服务器,PHP 要求 7.2 ,服务器支持 Memcached。还需要额外安装插件WPJAM,看到这里可能有很多小站长只能望而却步了。

这里为大家介绍的是只用简单代码把WP和公众号连接的方法,不用插件操作简单,缺点功能相对较少,连接后可以实现公众号通过关键字调取网站内容,搜索文章,对于许多站长来说已经足够用了,让你的公众号不在缺少内容。

安装方法:

  1. 在你网站根目录下创建一个名为weixin.php的文件,将以下代码放进去。
  2. 将代码中的数据库链接信息,改成你WordPress的数据库链接信息。
  3. 默认的token为weixin,可修改为自己的token,需要与微信公众号后台的token对应。
  4. 进入微信公众号平台-基本配置-服务器配置-设置里面设置对接信息,域名地址是http://你的域名/weixin.php
  5. 提交后就可以实现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);
        }
    }
}
?>

效果展示:

WordPress教程 纯代码让wordpress网站与微信公众号对接-氯化钠资源网站

本文链接:https://lzphy.top/1156/
© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容