WordPress如何自定义首字母排序标签页面?

WordPress如何自定义首字母排序标签页面?制作一个首字母排序的标签页面,通过代码实现所有站内标签按照26个字母进行分类排序。中文按首字母排列标签云有些麻烦,我们必须检索出标签第一个字的拼音的第一个字母,然后进行排序输出。提供用户体验,具体效果如图:

WordPress如何自定义首字母排序标签页面?插图下载群
1、第一步

把下面汉字转字母类放到 functions.php最后一个 ?>

/**

* 汉字转拼音类

* Author: Maker Cloud

* Homepage: https://www.2kss.com

*/

class Chinese_to_PY {

/**

* 拼音字符转换图

* @var array

*/

private static $_aMaps = array(

\’a\’=>-20319,\’ai\’=>-20317,\’an\’=>-20304,\’ang\’=>-20295,\’ao\’=>-20292,

\’ba\’=>-20283,\’bai\’=>-20265,\’ban\’=>-20257,\’bang\’=>-20242,\’bao\’=>-20230,\’bei\’=>-20051,\’ben\’=>-20036,\’beng\’=>-20032,\’bi\’=>-20026,\’bian\’=>-20002,\’biao\’=>-19990,\’bie\’=>-19986,\’bin\’=>-19982,\’bing\’=>-19976,\’bo\’=>-19805,\’bu\’=>-19784,

\’ca\’=>-19775,\’cai\’=>-19774,\’can\’=>-19763,\’cang\’=>-19756,\’cao\’=>-19751,\’ce\’=>-19746,\’ceng\’=>-19741,\’cha\’=>-19739,\’chai\’=>-19728,\’chan\’=>-19725,\’chang\’=>-19715,\’chao\’=>-19540,\’che\’=>-19531,\’chen\’=>-19525,\’cheng\’=>-19515,\’chi\’=>-19500,\’chong\’=>-19484,\’chou\’=>-19479,\’chu\’=>-19467,\’chuai\’=>-19289,\’chuan\’=>-19288,\’chuang\’=>-19281,\’chui\’=>-19275,\’chun\’=>-19270,\’chuo\’=>-19263,\’ci\’=>-19261,\’cong\’=>-19249,\’cou\’=>-19243,\’cu\’=>-19242,\’cuan\’=>-19238,\’cui\’=>-19235,\’cun\’=>-19227,\’cuo\’=>-19224,

\’da\’=>-19218,\’dai\’=>-19212,\’dan\’=>-19038,\’dang\’=>-19023,\’dao\’=>-19018,\’de\’=>-19006,\’deng\’=>-19003,\’di\’=>-18996,\’dian\’=>-18977,\’diao\’=>-18961,\’die\’=>-18952,\’ding\’=>-18783,\’diu\’=>-18774,\’dong\’=>-18773,\’dou\’=>-18763,\’du\’=>-18756,\’duan\’=>-18741,\’dui\’=>-18735,\’dun\’=>-18731,\’duo\’=>-18722,

\’e\’=>-18710,\’en\’=>-18697,\’er\’=>-18696,

\’fa\’=>-18526,\’fan\’=>-18518,\’fang\’=>-18501,\’fei\’=>-18490,\’fen\’=>-18478,\’feng\’=>-18463,\’fo\’=>-18448,\’fou\’=>-18447,\’fu\’=>-18446,

\’ga\’=>-18239,\’gai\’=>-18237,\’gan\’=>-18231,\’gang\’=>-18220,\’gao\’=>-18211,\’ge\’=>-18201,\’gei\’=>-18184,\’gen\’=>-18183,\’geng\’=>-18181,\’gong\’=>-18012,\’gou\’=>-17997,\’gu\’=>-17988,\’gua\’=>-17970,\’guai\’=>-17964,\’guan\’=>-17961,\’guang\’=>-17950,\’gui\’=>-17947,\’gun\’=>-17931,\’guo\’=>-17928,

\’ha\’=>-17922,\’hai\’=>-17759,\’han\’=>-17752,\’hang\’=>-17733,\’hao\’=>-17730,\’he\’=>-17721,\’hei\’=>-17703,\’hen\’=>-17701,\’heng\’=>-17697,\’hong\’=>-17692,\’hou\’=>-17683,\’hu\’=>-17676,\’hua\’=>-17496,\’huai\’=>-17487,\’huan\’=>-17482,\’huang\’=>-17468,\’hui\’=>-17454,\’hun\’=>-17433,\’huo\’=>-17427,

\’ji\’=>-17417,\’jia\’=>-17202,\’jian\’=>-17185,\’jiang\’=>-16983,\’jiao\’=>-16970,\’jie\’=>-16942,\’jin\’=>-16915,\’jing\’=>-16733,\’jiong\’=>-16708,\’jiu\’=>-16706,\’ju\’=>-16689,\’juan\’=>-16664,\’jue\’=>-16657,\’jun\’=>-16647,

\’ka\’=>-16474,\’kai\’=>-16470,\’kan\’=>-16465,\’kang\’=>-16459,\’kao\’=>-16452,\’ke\’=>-16448,\’ken\’=>-16433,\’keng\’=>-16429,\’kong\’=>-16427,\’kou\’=>-16423,\’ku\’=>-16419,\’kua\’=>-16412,\’kuai\’=>-16407,\’kuan\’=>-16403,\’kuang\’=>-16401,\’kui\’=>-16393,\’kun\’=>-16220,\’kuo\’=>-16216,

\’la\’=>-16212,\’lai\’=>-16205,\’lan\’=>-16202,\’lang\’=>-16187,\’lao\’=>-16180,\’le\’=>-16171,\’lei\’=>-16169,\’leng\’=>-16158,\’li\’=>-16155,\’lia\’=>-15959,\’lian\’=>-15958,\’liang\’=>-15944,\’liao\’=>-15933,\’lie\’=>-15920,\’lin\’=>-15915,\’ling\’=>-15903,\’liu\’=>-15889,\’long\’=>-15878,\’lou\’=>-15707,\’lu\’=>-15701,\’lv\’=>-15681,\’luan\’=>-15667,\’lue\’=>-15661,\’lun\’=>-15659,\’luo\’=>-15652,

\’ma\’=>-15640,\’mai\’=>-15631,\’man\’=>-15625,\’mang\’=>-15454,\’mao\’=>-15448,\’me\’=>-15436,\’mei\’=>-15435,\’men\’=>-15419,\’meng\’=>-15416,\’mi\’=>-15408,\’mian\’=>-15394,\’miao\’=>-15385,\’mie\’=>-15377,\’min\’=>-15375,\’ming\’=>-15369,\’miu\’=>-15363,\’mo\’=>-15362,\’mou\’=>-15183,\’mu\’=>-15180,

\’na\’=>-15165,\’nai\’=>-15158,\’nan\’=>-15153,\’nang\’=>-15150,\’nao\’=>-15149,\’ne\’=>-15144,\’nei\’=>-15143,\’nen\’=>-15141,\’neng\’=>-15140,\’ni\’=>-15139,\’nian\’=>-15128,\’niang\’=>-15121,\’niao\’=>-15119,\’nie\’=>-15117,\’nin\’=>-15110,\’ning\’=>-15109,\’niu\’=>-14941,\’nong\’=>-14937,\’nu\’=>-14933,\’nv\’=>-14930,\’nuan\’=>-14929,\’nue\’=>-14928,\’nuo\’=>-14926,

\’o\’=>-14922,\’ou\’=>-14921,

\’pa\’=>-14914,\’pai\’=>-14908,\’pan\’=>-14902,\’pang\’=>-14894,\’pao\’=>-14889,\’pei\’=>-14882,\’pen\’=>-14873,\’peng\’=>-14871,\’pi\’=>-14857,\’pian\’=>-14678,\’piao\’=>-14674,\’pie\’=>-14670,\’pin\’=>-14668,\’ping\’=>-14663,\’po\’=>-14654,\’pu\’=>-14645,

\’qi\’=>-14630,\’qia\’=>-14594,\’qian\’=>-14429,\’qiang\’=>-14407,\’qiao\’=>-14399,\’qie\’=>-14384,\’qin\’=>-14379,\’qing\’=>-14368,\’qiong\’=>-14355,\’qiu\’=>-14353,\’qu\’=>-14345,\’quan\’=>-14170,\’que\’=>-14159,\’qun\’=>-14151,

\’ran\’=>-14149,\’rang\’=>-14145,\’rao\’=>-14140,\’re\’=>-14137,\’ren\’=>-14135,\’reng\’=>-14125,\’ri\’=>-14123,\’rong\’=>-14122,\’rou\’=>-14112,\’ru\’=>-14109,\’ruan\’=>-14099,\’rui\’=>-14097,\’run\’=>-14094,\’ruo\’=>-14092,

\’sa\’=>-14090,\’sai\’=>-14087,\’san\’=>-14083,\’sang\’=>-13917,\’sao\’=>-13914,\’se\’=>-13910,\’sen\’=>-13907,\’seng\’=>-13906,\’sha\’=>-13905,\’shai\’=>-13896,\’shan\’=>-13894,\’shang\’=>-13878,\’shao\’=>-13870,\’she\’=>-13859,\’shen\’=>-13847,\’sheng\’=>-13831,\’shi\’=>-13658,\’shou\’=>-13611,\’shu\’=>-13601,\’shua\’=>-13406,\’shuai\’=>-13404,\’shuan\’=>-13400,\’shuang\’=>-13398,\’shui\’=>-13395,\’shun\’=>-13391,\’shuo\’=>-13387,\’si\’=>-13383,\’song\’=>-13367,\’sou\’=>-13359,\’su\’=>-13356,\’suan\’=>-13343,\’sui\’=>-13340,\’sun\’=>-13329,\’suo\’=>-13326,

\’ta\’=>-13318,\’tai\’=>-13147,\’tan\’=>-13138,\’tang\’=>-13120,\’tao\’=>-13107,\’te\’=>-13096,\’teng\’=>-13095,\’ti\’=>-13091,\’tian\’=>-13076,\’tiao\’=>-13068,\’tie\’=>-13063,\’ting\’=>-13060,\’tong\’=>-12888,\’tou\’=>-12875,\’tu\’=>-12871,\’tuan\’=>-12860,\’tui\’=>-12858,\’tun\’=>-12852,\’tuo\’=>-12849,

\’wa\’=>-12838,\’wai\’=>-12831,\’wan\’=>-12829,\’wang\’=>-12812,\’wei\’=>-12802,\’wen\’=>-12607,\’weng\’=>-12597,\’wo\’=>-12594,\’wu\’=>-12585,

\’xi\’=>-12556,\’xia\’=>-12359,\’xian\’=>-12346,\’xiang\’=>-12320,\’xiao\’=>-12300,\’xie\’=>-12120,\’xin\’=>-12099,\’xing\’=>-12089,\’xiong\’=>-12074,\’xiu\’=>-12067,\’xu\’=>-12058,\’xuan\’=>-12039,\’xue\’=>-11867,\’xun\’=>-11861,

\’ya\’=>-11847,\’yan\’=>-11831,\’yang\’=>-11798,\’yao\’=>-11781,\’ye\’=>-11604,\’yi\’=>-11589,\’yin\’=>-11536,\’ying\’=>-11358,\’yo\’=>-11340,\’yong\’=>-11339,\’you\’=>-11324,\’yu\’=>-11303,\’yuan\’=>-11097,\’yue\’=>-11077,\’yun\’=>-11067,

\’za\’=>-11055,\’zai\’=>-11052,\’zan\’=>-11045,\’zang\’=>-11041,\’zao\’=>-11038,\’ze\’=>-11024,\’zei\’=>-11020,\’zen\’=>-11019,\’zeng\’=>-11018,\’zha\’=>-11014,\’zhai\’=>-10838,\’zhan\’=>-10832,\’zhang\’=>-10815,\’zhao\’=>-10800,\’zhe\’=>-10790,\’zhen\’=>-10780,\’zheng\’=>-10764,\’zhi\’=>-10587,\’zhong\’=>-10544,\’zhou\’=>-10533,\’zhu\’=>-10519,\’zhua\’=>-10331,\’zhuai\’=>-10329,\’zhuan\’=>-10328,\’zhuang\’=>-10322,\’zhui\’=>-10315,\’zhun\’=>-10309,\’zhuo\’=>-10307,\’zi\’=>-10296,\’zong\’=>-10281,\’zou\’=>-10274,\’zu\’=>-10270,\’zuan\’=>-10262,\’zui\’=>-10260,\’zun\’=>-10256,\’zuo\’=>-10254

);

/**

* 将中文编码成拼音

* @param string $chinese 要转换为拼音的字符串

* @param string $sRetFormat 返回格式 [first:每个字的首字母|all:全拼音|one:字符串字母]

* @return string

*/

public static function getPY($chinese, $sRetFormat=\’first\’){

$sGBK = iconv(\’UTF-8\’, \’GBK\’, $chinese);

$sUTF8 = iconv(\’GBK\’, \’UTF-8\’, $sGBK);

if($sUTF8 != $chinese) $sGBK = $chinese;

$aBuf = array();

for ($i=0, $iLoop=strlen($sGBK); $i<$iLoop; $i++) {

$iChr = ord($sGBK{$i});

if ($iChr>160)

$iChr = ($iChr<<8) + ord($sGBK{++$i}) – 65536;

if (\’first\’ == $sRetFormat || \’one\’ == $sRetFormat)

$aBuf[] = substr(self::zh2py($iChr),0,1);

else

$aBuf[] = self::zh2py($iChr);

}

if (\’first\’ === $sRetFormat)

return implode(\’\’, $aBuf);

elseif(\’one\’ == $sRetFormat)

return $aBuf[0];

else

return implode(\’ \’, $aBuf);

}

/**

* 中文转换到拼音(每次处理一个字符)

* @param number $iWORD 待处理字符双字节

* @return string 拼音

*/

private static function zh2py($iWORD) {

if($iWORD>0 && $iWORD<160 ) {

return chr($iWORD);

} elseif ($iWORD<-20319||$iWORD>-10247) {

return \’\’;

} else {

foreach (self::$_aMaps as $py => $code) {

if($code > $iWORD) break;

$result = $py;

}

return $result;

}

}

}

2、第二步

接着就是获取所有标签生成标签页的代码(依然放入主题functions.php函数文件中):

function specs_show_tags() {

if(!$output = get_option(\’specs_tags_list\’)){

$categories = get_terms( \’post_tag\’, array(

\’orderby\’ => \’count\’,

\’hide_empty\’ => 1

) );

$r = array();

foreach($categories as $v){

for($i = 65; $i <= 90; $i++){

if(strtoupper(Chinese_to_PY::getPY($v->name,\’one\’)) == chr($i)){

$r[chr($i)][] = $v;

}

}

for($i=48;$i<=57;$i++){

if(strtoupper(Chinese_to_PY::getPY($v->name,\’one\’)) == chr($i)){

$r[chr($i)][] = $v;

}

}

}

ksort($r);

$output = \”<ul class=\’list-inline\’ id=\’tag_letter\’>\”;

for($i=65;$i<=90;$i++){

$tagi = $r[chr($i)];

if(is_array($tagi)){

$output .= \”<li><a href=\’#\”.chr($i).\”\’>\”.chr($i).\”</a></li>\”;

}else{

$output .= \”<li>\”.chr($i).\”</li>\”;

}

}

for($i=48;$i<=57;$i++){

$tagi = $r[chr($i)];

if(is_array($tagi)){

$output .= \”<li><a href=\’#\”.chr($i).\”\’>\”.chr($i).\”</a></li>\”;

}else{

$output .= \”<li>\”.chr($i).\”</li>\”;

}

}

$output .= \”</ul>\”;

$output .= \”<ul id=\’all_tags\’ class=\’list-unstyled\’>\”;

for($i=65;$i<=90;$i++){

$tagi = $r[chr($i)];

if(is_array($tagi)){

$output .= \”<li id=\’\”.chr($i).\”\’><h4 class=\’tag_name\’>\”.chr($i).\”</h4>\”;

foreach($tagi as $tag){

$output .= \”<a href=\’\”.get_tag_link($tag->term_id).\”\’>\”.$tag->name.\”(\”.$tag->count.\”)</a>\”;

}

}

}

for($i=48;$i<=57;$i++){

$tagi = $r[chr($i)];

if(is_array($tagi)){

$output .= \”<li id=\’\”.chr($i).\”\’><h4 class=\’tag_name\’>\”.chr($i).\”</h4>\”;

foreach($tagi as $tag){

$output .= \”<a href=\’\”.get_tag_link($tag->term_id).\”\’>\”.$tag->name.\”(\”.$tag->count.\”)</a>\”;

}

}

}

$output .= \”</ul>\”;

update_option(\’specs_tags_list\’, $output);

}

echo $output;

}

function clear_tags_cache() {

update_option(\’specs_tags_list\’, \’\’); // 清空 specs_archives_list

}

add_action(\’save_post\’, \’clear_tags_cache\’); // 新发表文章/修改文章时

然后复制一份 page.php 文件,把其中 <?php the_content(); ?> 部分换成 <?php specs_show_tags(); ?>,并把 Template Name 名字替换为“标签页面”,然后在后台新建一个页面,模板选择“标签页面”,保存即可。

3、第三步

之后效果都可以自己选择,在css哪里设置,下面是上面的图片一样效果的代码例子:

.tag_name{ width:1034px; float:left; line-height:30px; margin:25px 0 0 26px; font-size:14px; color:#000;line-height: 200%;}

.tag_name_a{ width:1034px; float:left; border:2px solid #d8d9d9;}

.tag_name_b{ width:680px; float:left; line-height:30px; margin:25px 0 0 26px; font-size:14px; color:#000;}

.tag_name_c{ width:980px; height:45px; float:left; border-bottom:1px solid #d8d9d9; margin:25px 0 0 26px; font-size:20px; color:#000;}

.list-unstyled{ width:1034px; float:left; line-height:30px; margin:25px 0 0 26px; font-size:14px; color:#000;line-height: 200%;margin: 2px;}

.list-unstyled li{width: 1000px;float: left;margin: 0 10px 0 0;padding: 5px;}

.list-unstyled a{color: #333333; padding: 5px 8px;}

.list-inline {width:1000px;list-style: none;height:100px; text-align:center; overflow:hidden; padding-top:0em;}

.list-inline li{float: left;}

.list-inline a{display: block;text-decoration: none;background: none repeat scroll 0 0 #333333; border: 5px solid #333333; color: #f7f8f8; margin: 1px; padding: 3px 8px;}

.list-inline a:hover,.ist-inlin a.current {text-decoration: underline;background: none repeat scroll 0 0 #da5a04; border: 4px solid #da5a04;

color: #f7f8f8; font-weight: bolder;}

本文来源于 网络,由本站搜集发布,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系本站核实处理。如需转载,请注明文章来源。

© 版权声明
THE END
喜欢就支持一下吧
点赞40 分享