概述
说明
- 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单
- 一级菜单最多4个汉字,二级菜单最多7个汉字,多出部分用省略号代替
- 测试时可以尝试取消/关注公众账号后,则可以看到菜单的变化
按钮类型
- click:点击推事件
- view:跳转URL
文档
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432
PS:需要使用认证账号或者测试号
实例
<?php
/**
* 自定义菜单--创建
* 文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
*/
//获取access_token,写入文件保存
header("Content-type: text/html; charset=utf-8");
$accessTokenInfo = file_get_contents("access_token.log");
if($accessTokenInfo){
$tokenArr = json_decode($accessTokenInfo,true);
//
var_dump($tokenArr);
if((time() + $tokenArr['expires_in'] -200) >time()){//保证不过期,减去200秒,做缓冲
$access_token = $tokenArr['access_token'];
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=" . $access_token;
$postArr['button'] = [
[
'type'=>'click',
'name'=>urlencode('歌曲'),//中文得处理一下,否则报错
'key'=>'V1001_TODAY_MUSIC'
],//第一个一级菜单
[
'name'=>urlencode('菜单'),
'sub_button'=>[
[
"type"=>"view",
"name"=>urlencode('搜索'),
"url"=>"http://www.soso.com/"
],
[
"type"=>"view",
"name"=>urlencode('百度'),
"url"=>"http://www.baidu.com/"
]
]
],//第二个一级菜单
];
$postJson = urldecode(json_encode($postArr));
//CURL发送请求
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postJson);
$output = curl_exec($ch);
curl_close($ch);
var_dump(json_decode($output,true));
}
}else{
//重新请求access_token写入文件
$ch = curl_init();
$appId = "wxc7991ed87e25dc13";
$appSecret = "3c1be9b400aae7042afb78dbd577f206";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$outPut = curl_exec($ch);
curl_close($ch);
file_put_contents("access_token.log",$outPut);
}
自定义菜单推送事件
文档地址:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454
实例
<?php
$postArr = file_get_contents('php://input');
$postObj = simplexml_load_string($postArr,'SimpleXMLElement', LIBXML_NOCDATA);
if(strtolower($postObj->MsgType) == 'event' && strtoupper($postObj->Event) == "CLICK") {//click事件
if(strtoupper($postObj->EventKey) == "V1001_TODAY_MUSIC"){
$Content = "这是一级菜单的click的事件";
}
$ToUserName = $postObj->FromUserName;
$FromUserName = $postObj->ToUserName;
$CreateTime = time();
$MsgType = 'text';
$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,$ToUserName,$FromUserName,$CreateTime,$MsgType,$Content);
echo $info;
}
if(strtolower($postObj->MsgType) == 'event' && strtoupper($postObj->Event) == "VIEW") {//view事件
//直接跳转到指定的url地址上
}
最后
以上就是殷勤抽屉为你收集整理的PHP微信公众平台开发高级篇--自定义菜单的全部内容,希望文章能够帮你解决PHP微信公众平台开发高级篇--自定义菜单所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复