При разработке тем WordPress нам часто необходимо получить доменное имя первого уровня или доменное имя верхнего уровня в URL-адресе. Эта функция очень важна, особенно при проверке разрешений. Хотя PHP имеет множество встроенных суперглобальных переменных, они не позволяют нам легко получить доменное имя верхнего уровня. Ниже мы можем перехватить то, что нам нужно, с помощью специальной функции.

/**
 * Получить доменное имя верхнего уровня.
 *
 * @param string $url доменное имя HOST, например: www.iowen.cn, www.baidu.com
 * @return string доменное имя верхнего уровня, например: iowen.cn, baidu.com
 */
функция 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','e du.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 = взорваться(".", $url);
    если (count($url_arr) <= 2) {
        $хост = $url;
    } еще {
        $last = array_pop($url_arr);
        $last_1 = array_pop($url_arr);
        $last_2 = array_pop($url_arr);
        $host = $last_1.'.'.$last;
        если (in_array($host, $dual_host)) {
            $host = $last_2.'.'.$last_1.'.'.$last;
        }
    }
    вернуть $хост;
}