Dans le développement de thèmes WordPress, nous avons souvent besoin d'obtenir le nom de domaine de premier niveau ou le nom de domaine de premier niveau dans l'adresse URL. Cette fonction est très importante notamment lors de la vérification des autorisations. Bien que PHP possède de nombreuses variables super-globales intégrées, il ne nous permet pas d'obtenir facilement le nom de domaine de premier niveau. Ci-dessous, nous pouvons intercepter ce dont nous avons besoin grâce à une fonction personnalisée.
/**
* Obtenir un nom de domaine de premier niveau
*
* @param string $url nom de domaine HOST, tel que : www.iowen.cn, www.baidu.com
* @return string nom de domaine de premier niveau tel que : iowen.cn, baidu.com
*/
fonction url_root($url=""){
$url = $url ? $url : $_SERVER["HTTP_HOST"];
$dual_host = array('aaa.pro','ac.cn','ac.kr','ac.mu','aca.pro','acct.pro','ae.org','ah.cn','ar.com','avocat.pro','bar.pro','biz.ki','biz.pl','bj.cn','br.com','busan.kr ','chungbuk.kr','chungnam.kr','club.tw','cn.com','co.ag','co.am','co.at','co.bz','co.cm','co.com','co.gg','co.gl','co.gy','co.il','co.im','co.in','co.je', 'co.kr','co.lc','co.mg','co.ms','co.mu','co.nl','co.nz','co.uk','co.ve','co.za','com.af','com.ag','com.am','com.ar','com.au','com.br','com.bz','com.cm','c om.cn','com.co','com.de','com.ec','com.es','com.gl','com.gr','com.gy','com.hn','com.ht','com.im','com.ki','com.lc','com.lv','com.mg','com.ms','com.mu','co m.mx','com.nf','com.pe','com.ph','com.pk','com.pl','com.ps','com.pt','com.ro','com.ru','com.sb','com.sc','com.se','com.sg','com.so','com.tw','com.vc','com .ve','cpa.pro','cq.cn','daegu.kr','daejeon.kr','de.com','ebiz.tw','edu.cn','edu.gl','eng.pro','es.kr','eu.com','fin.ec','firm.in','fj.cn','game.tw','gangw on.kr','gb.com','gb.net','gd.cn','gen.in','go.kr','gov.cn','gr.com','gs.cn','gwangju.kr','gx.cn','gyeongbuk.kr','gyeonggi.kr','gyeongnam.kr','gz.cn','ha.c n','hb.cn','he.cn','hi.cn','hk.cn','hl.cn','hn.cn','hs.kr','hu.com','hu.net', 'idv.tw','in.net','incheon.kr','ind.in','info.ec','info.ht','info.ki','info.nf ','info.pl','info.ve','jeju.kr','jeonbuk.kr','jeonnam.kr','jl.cn','jp.net','j pn.com','js.cn','jur.pro','jx.cn','kg.kr','kiwi.nz','kr.com','law.pro','ln.cn ','me.uk','med.ec','med.pro','mex.com','mo.cn','ms.kr','ne.kr','net.af','net.ag','net.am','net.br','net.bz','net.cm','net.cn','net.co','net.ec','net.gg',' net.gl','net.gr','net.gy','net.hn','net.ht','net.im','net.in','net.je','net.ki','net.lc','net.lv','net.mg','net.mu','net.my','net.nf','net.nz','net.ph','n et.pk','net.pl','net.ps','net.ru','net.sb','net.sc','net.so','net.vc','net.ve','nm.cn','no.com','nom.ag','nom.co','nom.es','nom.ro','nx.cn','or.at','or.jp ','or.kr','or.mu','org.af','org.ag','org.am','org.bz','org.cn','org.es','org.gg','org.gl','org.gr','org.hn','org.ht','org.il','org.im','org.in','org.je',' org.ki','org.lc','org.lv','org.mg','org.ms','org.mu','org.my','org.nz','org.pk','org.pl','org.ps','org.ro','org.ru','org.sb','org.sc','org.so','org.uk','o rg.vc','org.ve','pe.kr','pro.ec','qc.com','qh.cn','radio.am','radio.fm','re.k r','recht.pro','ru.com','sa.com','sc.cn','sc.kr','sd.cn','se.com','senet','se oul.kr','sh.cn','sn.cn','sx.cn','tj.cn','tw.cn','uk.com','uk.net','ulsan.kr', 'us.com', 'us.org', 'uy.com', 'web.ve', 'xj.cn', 'xz.cn', 'yn.cn', 'za.com', 'zj.cn');
$url_arr = exploser(".", $url);
si (compte($url_arr) <= 2) {
$hôte = $url ;
} autre {
$last = array_pop($url_arr);
$last_1 = array_pop($url_arr);
$last_2 = array_pop($url_arr);
$hôte = $last_1.'.'.$last;
if (in_array($host, $dual_host)) {
$hôte = $last_2.'.'.$last_1.'.'.$last;
}
}
renvoie $hôte ;
}