編集モードと開発モードは競合しています。したがって、WeChat 公式アカウントの開発モードを有効にすると、これらのメニューは表示されなくなります。ただし、現在、個人サブスクリプション アカウントではカスタム メニューなどの高度な開発者モードを使用できませんが、テスト アカウントを通じてテストし、コードをサービス アカウントに移動することはできます。
カスタム タイプには以下が含まれます:
1. クリック: クリック プッシュ イベント
• ユーザーがクリック タイプ ボタンをクリックした後、WeChat サーバーはメッセージ インターフェイスを通じてメッセージ タイプ イベント構造を開発者にプッシュします (「メッセージ インターフェイス ガイド)。開発者がボタンにキー値を入力すると、開発者はカスタマイズされたキー値を通じてユーザーと対話できます。
2. ユーザーがビュー タイプをクリックした後、ボタンをクリックすると、WeChat クライアントは開発者がボタンに入力した Web ページ URL を開きます。これを Web ページ認証インターフェイスと組み合わせて、ユーザーの基本情報を取得することができます。
• ユーザーがボタンをクリックすると、WeChat クライアントはスキャン コード操作の完了後にスキャン ツールを起動します (URL の場合は、 URL が入力されます)、コードのスキャン結果が開発者に送信され、開発者はメッセージを送信できます。
• ユーザーがボタンをクリックすると、コード スキャン操作が完了すると、WeChat クライアントがスキャン ツールを起動します。スキャンコードの結果が開発者に送信されます。同時にスキャンツールをしまうと、「メッセージ受信中」のプロンプトボックスが表示され、開発者からメッセージが届く場合があります。
は開発者に送信され、イベントを開発者にプッシュし、同時にシステムカメラをしまうと、開発者からメッセージを受け取る場合があります。
コードが提供されます。コードをサーバーにアップロードし、公式アカウントを再度フォローすると、開発モードでカスタムメニューが表示されます
$appid = '微信公众号的appid'; $appsecret = '微信公众号的appsecret'; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret=$appsecret"; $output = https_request($url); $jsoninfo = json_decode($output,true); $access_token = $jsoninfo["access_token"]; $jsonmenu = '{ "button":[ { "name":"学校系统", "sub_button":[ { "type":"click", "name":"课程表", "key":"课程表" }, { "type":"click", "name":"个人信息", "key":"个人信息" }, { "type":"click", "name":"平时成绩", "key":"平时成绩" }, { "type":"click", "name":"奖惩记录", "key":"奖惩记录" } ] }, { "name":"技术分享", "sub_button":[ { "type":"click", "name":"移动WEB开发", "key":"移动WEB开发" }, { "type":"click", "name":"J2EE框架", "key":"J2EE框架" }, { "type":"click", "name":"Android开发", "key":"Android开发" }, { "type":"click", "name":"PHP框架", "key":"PHP框架" } ] },{ "name":"技术支持", "sub_button":[ { "type":"click", "name":"在线客服", "key":"在线客服" }, { "type":"click", "name":"技术分享", "key":"技术分享" }, { "type":"view", "name":"天气预报", "url":"http://m.hao123.com/a/tianqi" } ] } ] }'; //创建菜单实现 $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token; $result = https_request($url,$jsonmenu); var_dump($result); function https_request($url,$data = null){ $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,0); if(!empty($data)){ curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$data); } curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); $output = curl_exec($curl); curl_close($curl); return $output; }