Rumah php教程 php手册 微信公众平台自定义菜单

微信公众平台自定义菜单

Jun 13, 2016 am 11:31 AM
sama syarikat platform membangun WeChat kami daripada Sesuaikan menu mahu Rekod

最近微信公众平台挺火的,肯定好多公司像我们公司一样,要开发微信公众平台,在此记录一下在制作 自定义菜单时遇到的问题,

希望能给某些人点思路,或少走点弯路.

为了动态修改自定义菜单,把菜单项存入数据库中 $arr是从数据库查询出来的经过处理后的数组格式为:

array(1) {
  ["button"] => array(3) {
    [0] => array(3) {
      ["type"] => string(4) "view"
      ["name"] => string(12) "公司新闻"
      ["url"] => string(24) "http://www.google.com.tw"
    }
    [1] => array(3) {
      ["type"] => string(4) "view"
      ["name"] => string(12) "公司案例"
      ["url"] => string(20) "http://www.baidu.com"
    }
    [2] => array(2) {
      ["name"] => string(12) "智能家居"
      ["sub_button"] => array(5) {
        [0] => array(3) {
          ["type"] => string(5) "click"
          ["name"] => string(12) "功能描述"
          ["key"] => string(10) "smart_desc"
        }
        [1] => array(3) {
          ["type"] => string(5) "click"
          ["name"] => string(12) "每日一点"
          ["key"] => string(9) "day_click"
        }
        [2] => array(3) {
          ["type"] => string(5) "click"
          ["name"] => string(12) "一天一点"
          ["key"] => string(13) "eve_day_click"
        }
        [3] => array(3) {
          ["type"] => string(5) "click"
          ["name"] => string(12) "休闲时刻"
          ["key"] => string(11) "xiuxian_day"
        }
        [4] => array(3) {
          ["type"] => string(5) "click"
          ["name"] => string(12) "做人好难"
          ["key"] => string(3) "nan"
        }
      }
    }
  }
}
Salin selepas log masuk

  

在添加菜单的时候发现直接json_encode($arr);会提示40016错误:不合法的按钮个数

在调用了json_encode函数之后所有中文被转换成 "\u8fd9" 这种形式,

为了使用json_encode处理后的结构而不改变中文可以使用如下函数(来源于互联网):

     /**************************************************************
	 *
	 *	使用特定function对数组中所有元素做处理
	 *	@param	string	&$array		要处理的字符串
	 *	@param	string	$function	要执行的函数
	 *	@return boolean	$apply_to_keys_also		是否也应用到key上
	 *	@access public
	 *
	 *************************************************************/
	function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
	{
	    static $recursive_counter = 0;
	    if (++$recursive_counter > 1000) {
	        die('possible deep recursion attack');
	    }
	    foreach ($array as $key => $value) {
	        if (is_array($value)) {
	            self::arrayRecursive($array[$key], $function, $apply_to_keys_also);
	        } else {
	            $array[$key] = $function($value);
	        }
	 
	        if ($apply_to_keys_also && is_string($key)) {
	            $new_key = $function($key);
	            if ($new_key != $key) {
	                $array[$new_key] = $array[$key];
	                unset($array[$key]);
	            }
	        }
	    }
	    $recursive_counter--;
	}
	 
	/**************************************************************
	 *
	 *	将数组转换为JSON字符串(兼容中文)
	 *	@param	array	$array		要转换的数组
	 *	@return string		转换得到的json字符串
	 *	@access public
	 *
	 *************************************************************/
	function JSON($array) {
		self::arrayRecursive($array, 'urlencode', true);
		$json = json_encode($array);
		return urldecode($json);
	}
Salin selepas log masuk

  

执行添加:

function apply(){
		$token_str = self::get_access_token();
		$del_url = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token={$token_str}";
		file_get_contents($del_url);
		$apply_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={$token_str}";
		$data = self::JSON(self::get_menu());//json化中文不变
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $apply_url);
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$result = curl_exec($ch);
		curl_close($ch);
		$result = json_decode($result,true);
		$this->redirect("Menu/index",array(
			'msg'=>($result['errcode']==0?'操作成功':'操作失败'),
			'state'=>$result['errcode']==0 ? 0 : 1
		));
	}
Salin selepas log masuk

 OK添加成功 ^_^ ,仅供参考

  当然代码过多发到首页肯定是过不了的,不过为了让更多人看到还是厚着脸色发布到首页(不知道能在首页呆几分钟~

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Tutorial muat turun domestik Tutorial muat turun domestik Mar 21, 2025 pm 05:42 PM

Artikel ini menyediakan panduan terperinci untuk muat turun selamat aplikasi OUYI OKX di China. Oleh kerana sekatan ke kedai aplikasi domestik, pengguna dinasihatkan untuk memuat turun aplikasi melalui laman web rasmi OUYI OKX, atau menggunakan kod QR yang disediakan oleh laman web rasmi untuk mengimbas dan memuat turun. Semasa proses muat turun, pastikan anda mengesahkan alamat laman web rasmi, periksa kebenaran aplikasi, lakukan imbasan keselamatan selepas pemasangan, dan membolehkan pengesahan dua faktor. Semasa penggunaan, sila mematuhi undang -undang dan peraturan tempatan, gunakan persekitaran rangkaian yang selamat, melindungi keselamatan akaun, berhati -hati terhadap penipuan, dan melabur secara rasional. Artikel ini hanya untuk rujukan dan tidak menjadi nasihat pelaburan.

Perbezaan antara program H5 dan mini dan aplikasi Perbezaan antara program H5 dan mini dan aplikasi Apr 06, 2025 am 10:42 AM

H5. Perbezaan utama antara program mini dan aplikasi ialah: Senibina Teknikal: H5 adalah berdasarkan teknologi web, dan program mini dan aplikasi adalah aplikasi bebas. Pengalaman dan Fungsi: H5 adalah ringan dan mudah digunakan, dengan fungsi terhad; Program mini adalah ringan dan mempunyai interaktif yang baik; Aplikasi berkuasa dan mempunyai pengalaman yang lancar. Keserasian: H5 adalah serasi, aplikasinya dan aplikasinya yang serasi dengan platform. Kos Pembangunan: H5 mempunyai kos pembangunan yang rendah, program mini sederhana, dan aplikasi tertinggi. Senario yang berkenaan: H5 sesuai untuk paparan maklumat, applet sesuai untuk aplikasi ringan, dan aplikasi sesuai untuk fungsi kompleks.

Apa yang perlu saya lakukan sekiranya perisian keselamatan syarikat bertentangan dengan aplikasi? Bagaimana untuk menyelesaikan masalah perisian keselamatan yang menyebabkan perisian biasa gagal dibuka? Apa yang perlu saya lakukan sekiranya perisian keselamatan syarikat bertentangan dengan aplikasi? Bagaimana untuk menyelesaikan masalah perisian keselamatan yang menyebabkan perisian biasa gagal dibuka? Apr 01, 2025 pm 10:48 PM

Isu keserasian dan kaedah penyelesaian masalah untuk perisian dan aplikasi keselamatan syarikat. Banyak syarikat akan memasang perisian keselamatan untuk memastikan keselamatan intranet. Walau bagaimanapun, perisian keselamatan kadang -kadang ...

Cara Memilih H5 dan Applet Cara Memilih H5 dan Applet Apr 06, 2025 am 10:51 AM

Pilihan H5 dan Applet bergantung kepada keperluan. Untuk aplikasi dengan platform silang, perkembangan pesat dan skalabiliti yang tinggi, pilih H5; Untuk aplikasi dengan pengalaman asli, fungsi yang kaya dan ketergantungan platform, pilih applet.

Tutorial terperinci mengenai cara membeli dan menjual mata wang maya Binance Tutorial terperinci mengenai cara membeli dan menjual mata wang maya Binance Mar 18, 2025 pm 01:36 PM

Artikel ini menyediakan panduan ringkas untuk membeli dan menjual mata wang maya Binance yang dikemas kini pada tahun 2025, dan menerangkan secara terperinci langkah -langkah operasi transaksi mata wang maya pada platform Binance. Panduan ini meliputi pembelian mata wang fiat USDT, pembelian transaksi mata wang mata wang lain (seperti BTC), dan operasi jualan, termasuk perdagangan pasaran dan perdagangan had. Di samping itu, Panduan juga secara khusus mengingatkan risiko utama seperti keselamatan pembayaran dan pemilihan rangkaian untuk urus niaga mata wang fiat, membantu pengguna menjalankan urus niaga Binance dengan selamat dan cekap. Melalui artikel ini, anda dapat dengan cepat menguasai kemahiran membeli dan menjual mata wang maya di platform Binance dan mengurangkan risiko transaksi.

Apakah perbezaan antara pengeluaran halaman H5 dan applet WeChat Apakah perbezaan antara pengeluaran halaman H5 dan applet WeChat Apr 05, 2025 pm 11:51 PM

H5 lebih fleksibel dan disesuaikan, tetapi memerlukan teknologi mahir; Program mini cepat bermula dan mudah dikekalkan, tetapi dibatasi oleh kerangka WeChat.

Hominid digital budaya dan pelancongan dwi-teras pertama di negara ini! Tencent Cloud membantu kawasan indah Huaguoshan menyambung ke DeepSeek, menjadikan 'Sage Monkey King' lebih pintar dan lebih hangat Hominid digital budaya dan pelancongan dwi-teras pertama di negara ini! Tencent Cloud membantu kawasan indah Huaguoshan menyambung ke DeepSeek, menjadikan 'Sage Monkey King' lebih pintar dan lebih hangat Mar 12, 2025 pm 12:57 PM

Kawasan Scenic Lianyungang Huaguoshan bergabung dengan Tencent Cloud untuk melancarkan homo sapiens digital "otak dwi -teras" yang pertama dalam industri budaya dan pelancongan - Monkey King! Pada 1 Mac, tempat yang indah secara rasmi menghubungkan The Monkey King ke platform DeepSeek, sehingga ia mempunyai keupayaan model AI Tencent Hunyuan dan Deepseek, membawa pelancong pengalaman perkhidmatan yang lebih bijak dan lebih perhatian. Huaguoshan Scenic Area sebelum ini melancarkan Monkey King dari Digital Homo Sapiens berdasarkan model Tencent Hunyuan. Kali ini, Tencent Cloud terus menggunakan teknologi seperti Big Model Knowledge Engine untuk menyambungkannya ke DeepSeek untuk mencapai peningkatan "dwi-teras". Ini menjadikan keupayaan interaktif Monkey King ke tahap yang lebih tinggi, kelajuan tindak balas yang lebih cepat, keupayaan pemahaman yang lebih kuat, dan lebih banyak kehangatan. Monkey King mempunyai keupayaan pemprosesan bahasa semulajadi yang kuat dan dapat memahami pelbagai cara untuk bertanya dari pelancong.

Bagaimana untuk menyelesaikan masalah Caching Sumber JS di WeChat Enterprise? Bagaimana untuk menyelesaikan masalah Caching Sumber JS di WeChat Enterprise? Apr 04, 2025 pm 05:06 PM

Perbincangan mengenai isu caching sumber JS WeChat. Apabila menaik taraf fungsi projek, sesetengah pengguna sering menghadapi situasi di mana mereka gagal untuk meningkatkan peningkatan, terutamanya dalam perusahaan ...

See all articles