NextGEN Gallery是Wordpress中著名的相册插件,遗憾的是不支持中文等unicode字符,本文将介绍如何将目录转换为拼音(添加图集时)。

以NextGEN 1.6.2为例:

“新增图集/图片”的路径是:admin.php?page=nggallery-add-gallery,我们在nextgen-gallery/admin/admin.php中查找“nggallery-add-gallery”,

switch ( $_GET [ ' page ' ]){
case " nggallery-add-gallery " :
include_once ( dirname ( __FILE__ ) . ' /functions.php ' ); // admin functions
include_once ( dirname ( __FILE__ ) . ' /addgallery.php ' ); // nggallery_admin_add_gallery
$ngg -> addgallery_page = new nggAddGallery ();
$ngg -> addgallery_page -> controller();
break ;

类nggAddGallery在addgallery.php中,鼠标悬停在”新增图集“Tab上时从浏览器的状态栏可以看到URL是 admin.php?page=nggallery-add-gallery#addgallery , 在addgallery.php中查找"addgallery"看到其调用了:

nggAdmin::create_gallery($newgallery, $defaultpath);

nggAdmin类位于functions.php中,create_gallery函数修改如下:(红色粗体是新增加的行)

require_once('cn2pinyin.php' );
/* *
* nggAdmin - Class for admin operation
*
* @package NextGEN Gallery
* @author Alex Rabe
* @copyright 2007-2010
* @access public
*/
class nggAdmin{

/* *
* create a new gallery & folder
*
* 添加中文支持 by:Elf Sundae
*
* @class nggAdmin
* @param string $gallerytitle
* @param string $defaultpath
* @param bool $output if the function should show an error messsage or not
* @return
*/
function create_gallery( $gallerytitle , $defaultpath , $output = true ) {

global $wpdb , $user_ID ;

// get the current user ID
get_currentuserinfo();

// cleanup pathname
$galleryname = sanitize_file_name( $gallerytitle );
// 中文转换为拼音
$galleryname = cn2pinyin($galleryname,1
);
$galleryname = apply_filters( ' ngg_gallery_name ' , $galleryname );
$nggpath = $defaultpath . $galleryname ;
$nggRoot = WINABSPATH . $defaultpath ;
$txt = '' ;

其中cn2pinyin是汉字转换为拼音的函数,位于cn2pinyin.php(新建此文件)中。

cn2pinyin.php

<? php
/* *
*
* 中文转换为拼音
*
*/
function cn2pinyin( $_String , $_Code = ' gb2312 ' ) {
$_DataKey = " a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha " .
" |chai|chan|chang|chao|che|chen|cheng|chi|chong|chou|chu|chuai|chuan|chuang|chui|chun|chuo|ci|cong|cou|cu| " .
" cuan|cui|cun|cuo|da|dai|dan|dang|dao|de|deng|di|dian|diao|die|ding|diu|dong|dou|du|duan|dui|dun|duo|e|en|er " .
" |fa|fan|fang|fei|fen|feng|fo|fou|fu|ga|gai|gan|gang|gao|ge|gei|gen|geng|gong|gou|gu|gua|guai|guan|guang|gui " .
" |gun|guo|ha|hai|han|hang|hao|he|hei|hen|heng|hong|hou|hu|hua|huai|huan|huang|hui|hun|huo|ji|jia|jian|jiang " .
" |jiao|jie|jin|jing|jiong|jiu|ju|juan|jue|jun|ka|kai|kan|kang|kao|ke|ken|keng|kong|kou|ku|kua|kuai|kuan|kuang " .
" |kui|kun|kuo|la|lai|lan|lang|lao|le|lei|leng|li|lia|lian|liang|liao|lie|lin|ling|liu|long|lou|lu|lv|luan|lue " .
" |lun|luo|ma|mai|man|mang|mao|me|mei|men|meng|mi|mian|miao|mie|min|ming|miu|mo|mou|mu|na|nai|nan|nang|nao|ne " .
" |nei|nen|neng|ni|nian|niang|niao|nie|nin|ning|niu|nong|nu|nv|nuan|nue|nuo|o|ou|pa|pai|pan|pang|pao|pei|pen " .
" |peng|pi|pian|piao|pie|pin|ping|po|pu|qi|qia|qian|qiang|qiao|qie|qin|qing|qiong|qiu|qu|quan|que|qun|ran|rang " .
" |rao|re|ren|reng|ri|rong|rou|ru|ruan|rui|run|ruo|sa|sai|san|sang|sao|se|sen|seng|sha|shai|shan|shang|shao| " .
" she|shen|sheng|shi|shou|shu|shua|shuai|shuan|shuang|shui|shun|shuo|si|song|sou|su|suan|sui|sun|suo|ta|tai| " .
" tan|tang|tao|te|teng|ti|tian|tiao|tie|ting|tong|tou|tu|tuan|tui|tun|tuo|wa|wai|wan|wang|wei|wen|weng|wo|wu " .
" |xi|xia|xian|xiang|xiao|xie|xin|xing|xiong|xiu|xu|xuan|xue|xun|ya|yan|yang|yao|ye|yi|yin|ying|yo|yong|you " .
" |yu|yuan|yue|yun|za|zai|zan|zang|zao|ze|zei|zen|zeng|zha|zhai|zhan|zhang|zhao|zhe|zhen|zheng|zhi|zhong| " .
" zhou|zhu|zhua|zhuai|zhuan|zhuang|zhui|zhun|zhuo|zi|zong|zou|zu|zuan|zui|zun|zuo " ;
$_DataValue = " -20319|-20317|-20304|-20295|-20292|-20283|-20265|-20257|-20242|-20230|-20051|-20036|-20032|-20026|-20002|-19990 " .
" |-19986|-19982|-19976|-19805|-19784|-19775|-19774|-19763|-19756|-19751|-19746|-19741|-19739|-19728|-19725 " .
" |-19715|-19540|-19531|-19525|-19515|-19500|-19484|-19479|-19467|-19289|-19288|-19281|-19275|-19270|-19263 " .
" |-19261|-19249|-19243|-19242|-19238|-19235|-19227|-19224|-19218|-19212|-19038|-19023|-19018|-19006|-19003 " .
" |-18996|-18977|-18961|-18952|-18783|-18774|-18773|-18763|-18756|-18741|-18735|-18731|-18722|-18710|-18697 " .
" |-18696|-18526|-18518|-18501|-18490|-18478|-18463|-18448|-18447|-18446|-18239|-18237|-18231|-18220|-18211 " .
" |-18201|-18184|-18183|-18181|-18012|-17997|-17988|-17970|-17964|-17961|-17950|-17947|-17931|-17928|-17922 " .
" |-17759|-17752|-17733|-17730|-17721|-17703|-17701|-17697|-17692|-17683|-17676|-17496|-17487|-17482|-17468 " .
" |-17454|-17433|-17427|-17417|-17202|-17185|-16983|-16970|-16942|-16915|-16733|-16708|-16706|-16689|-16664 " .
" |-16657|-16647|-16474|-16470|-16465|-16459|-16452|-16448|-16433|-16429|-16427|-16423|-16419|-16412|-16407 " .
" |-16403|-16401|-16393|-16220|-16216|-16212|-16205|-16202|-16187|-16180|-16171|-16169|-16158|-16155|-15959 " .
" |-15958|-15944|-15933|-15920|-15915|-15903|-15889|-15878|-15707|-15701|-15681|-15667|-15661|-15659|-15652 " .
" |-15640|-15631|-15625|-15454|-15448|-15436|-15435|-15419|-15416|-15408|-15394|-15385|-15377|-15375|-15369 " .
" |-15363|-15362|-15183|-15180|-15165|-15158|-15153|-15150|-15149|-15144|-15143|-15141|-15140|-15139|-15128 " .
" |-15121|-15119|-15117|-15110|-15109|-14941|-14937|-14933|-14930|-14929|-14928|-14926|-14922|-14921|-14914 " .
" |-14908|-14902|-14894|-14889|-14882|-14873|-14871|-14857|-14678|-14674|-14670|-14668|-14663|-14654|-14645 " .
" |-14630|-14594|-14429|-14407|-14399|-14384|-14379|-14368|-14355|-14353|-14345|-14170|-14159|-14151|-14149 " .
" |-14145|-14140|-14137|-14135|-14125|-14123|-14122|-14112|-14109|-14099|-14097|-14094|-14092|-14090|-14087 " .
" |-14083|-13917|-13914|-13910|-13907|-13906|-13905|-13896|-13894|-13878|-13870|-13859|-13847|-13831|-13658 " .
" |-13611|-13601|-13406|-13404|-13400|-13398|-13395|-13391|-13387|-13383|-13367|-13359|-13356|-13343|-13340 " .
" |-13329|-13326|-13318|-13147|-13138|-13120|-13107|-13096|-13095|-13091|-13076|-13068|-13063|-13060|-12888 " .
" |-12875|-12871|-12860|-12858|-12852|-12849|-12838|-12831|-12829|-12812|-12802|-12607|-12597|-12594|-12585 " .
" |-12556|-12359|-12346|-12320|-12300|-12120|-12099|-12089|-12074|-12067|-12058|-12039|-11867|-11861|-11847 " .
" |-11831|-11798|-11781|-11604|-11589|-11536|-11358|-11340|-11339|-11324|-11303|-11097|-11077|-11067|-11055 " .
" |-11052|-11045|-11041|-11038|-11024|-11020|-11019|-11018|-11014|-10838|-10832|-10815|-10800|-10790|-10780 " .
" |-10764|-10587|-10544|-10533|-10519|-10331|-10329|-10328|-10322|-10315|-10309|-10307|-10296|-10281|-10274 " .
" |-10270|-10262|-10260|-10256|-10254 " ;
$_TDataKey = explode ( ' | ' , $_DataKey );
$_TDataValue = explode ( ' | ' , $_DataValue );
$_Data = ( PHP_VERSION >= ' 5.0 ' ) ? array_combine ( $_TDataKey , $_TDataValue ) : _Array_Combine( $_TDataKey , $_TDataValue );
arsort ( $_Data );
reset ( $_Data );
if ( $_Code != ' gb2312 ' )
$_String = _U2_Utf8_Gb( $_String );
$_Res = '' ;
for ( $i = 0 ; $i < strlen ( $_String ); $i ++ ) {
$_P = ord ( substr ( $_String , $i , 1 ));
if ( $_P > 160 ) {
$_Q = ord ( substr ( $_String , ++ $i , 1 ));
$_P = $_P * 256 + $_Q - 65536 ;
}
$_Res .= _Pinyin( $_P , $_Data );
}
return preg_replace ( " /[^a-z0-9]*/ " , '' , $_Res );
}

function _Pinyin( $_Num , $_Data ) {
if ( $_Num > 0 && $_Num < 160 )
return chr ( $_Num );
elseif ( $_Num < - 20319 || $_Num > - 10247 )
return '' ;
else {
foreach ( $_Data as $k => $v ) {
if ( $v <= $_Num )
break ;
}
return $k ;
}
}

function _U2_Utf8_Gb( $_C ) {
$_String = '' ;
if ( $_C < 0x80 )
$_String .= $_C ;
elseif ( $_C < 0x800 ) {
$_String .= chr ( 0xC0 | $_C >> 6 );
$_String .= chr ( 0x80 | $_C & 0x3F );
} elseif ( $_C < 0x10000 ) {
$_String .= chr ( 0xE0 | $_C >> 12 );
$_String .= chr ( 0x80 | $_C >> 6 & 0x3F );
$_String .= chr ( 0x80 | $_C & 0x3F );
} elseif ( $_C < 0x200000 ) {
$_String .= chr ( 0xF0 | $_C >> 18 );
$_String .= chr ( 0x80 | $_C >> 12 & 0x3F );
$_String .= chr ( 0x80 | $_C >> 6 & 0x3F );
$_String .= chr ( 0x80 | $_C & 0x3F );
}
return iconv ( ' UTF-8 ' , ' GB2312 ' , $_String );
}

function _Array_Combine( $_Arr1 , $_Arr2 ) {
for ( $i = 0 ; $i < count ( $_Arr1 ); $i ++ )
$_Res [ $_Arr1 [ $i ]] = $_Arr2 [ $i ];
return $_Res ;
}

// 用法:
//第二个参数留空则为gb1232编码
//echo cn2pinyin('中文测试');
//第二个参数随意设置则为utf-8编码
//echo cn2pinyin('中文测试',1);

?>

download cn2pinyin.php at: http://elfsundae.pastebin.com/SqP7GxDW

另外,修改“新增图集”中的名称支持字符提示:

addgallery.php 中,Line:304

function tab_addgallery() {
?>
<!-- create gallery -->
// / ....
<? php _e( ' Create a new , empty gallery below the folder ' , ' nggallery ' ) ; ?> < strong ><? php echo $this -> defaultpath ?></ strong >< br />
<? php } ?>
<i>(图集名称支持以下字符:中文、A-Z、a-z、0-9、-、_ ,中文将自动转换为拼音)</i ></ td >
</ tr >
<? php do_action( ' ngg_add_new_gallery_form ' ); ?>
</ table >
// ...
</ form >

转载于:https://www.cnblogs.com/elfsundae/archive/2010/12/20/1911439.html

Wordpress 相册插件 NextGEN-Gallery 添加目录中文支持解决办法(转为拼音)相关推荐

  1. NextGEN Gallery ~ 最强WordPress相册插件

    博客照片很多?上传和管理图片太烦?想幻灯显示相册?在博客中任意插入动态图片效果?-- 你和我一样,需要NextGEN Gallery,最强WordPress相册插件! 其实网上可以搜到不少关于这个插件 ...

  2. php7 中文乱码_PHP 中文乱码解决办法总结分析

    PHP 中文乱码解决办法总结分析 更新时间:2009年07月30日 01:19:43   作者: 总之一句话,要解决PHP中文乱码最好最快的解决办法就是,页面申明的编码与数据库内部编码一致,如果页面申 ...

  3. WordPress网站加载WAITING (TTFB) 时间过长解决办法

    WordPress 刚刚安装的时候,性能是没问题的,我们安装了主题.插件.添加了一些小工具和菜单,然后我们就开始上传内容了,我们都很勤快 Waiting (TTFB) 时间 Time to First ...

  4. navicat for mysql 显示中文乱码解决办法

    navicat for mysql 显示中文乱码解决办法   最近遇到一个问题,用navicat for mysql 打开数据库时全都显示的是乱码(在用程序代码插入数据之前确保字符不是乱码),遇到问题 ...

  5. ubuntu amd 64bit 安装 QQ for linux教程(附 不能使用中文的解决办法)

    ubuntu amd 64bit 安装 QQ for linux教程(附 不能使用中文的解决办法) Ubuntu 64bit 安装32bit软件 64bit系统构架的先进不由多讲,只是应用程序相对少了 ...

  6. NetBeans中文乱码解决办法

    首先来看看网上的一篇文章:http://it.dengchao.org/neatbeans-problem-fedora/linux/ 在Windows和Linux(Fedora/Ubuntu/Red ...

  7. Linux系统中,python需要import上一级目录文件的解决办法

    Linux系统中,python需要import上一级目录文件的解决办法 在import前添加代码: import sys import os sys.path.append(os.path.abspa ...

  8. 关于FusionChartsFree y轴不显示中文 的解决办法

    关于FusionChartsFree y轴不显示中文 的解决办法 ---首先说明,小辈这是第一次写blog,下面的文章可能写的不是很好,希望前辈们多多指教! 在网上搜了很多关于"Fusion ...

  9. Jenkins升级最新LTS版本2.150.x,页面本地化之后出现部分英文部分中文的解决办法

    Jenkins升级最新LTS版本2.150.x,页面本地化之后出现部分英文部分中文的解决办法 查看官方版本升级文档 下载并启用插件:localization-zh-cn-plugin 查看官方版本升级 ...

最新文章

  1. AI芯片爆火 但初创公司场景落地难
  2. SpringBoot整合WebSocket
  3. MATLAB的iptchecknargin函数详解
  4. 中望cad2018中文版
  5. MyBufferedReader
  6. 【Selenium-WebDriver自学】Selenium测试设计技术(十三)
  7. ]数据结构:单链表之判断两个链表是否相交及求交点(带环、不带环)
  8. 类型,对象,线程栈和托管堆在运行时的相互关系(一)。
  9. 保定2021高考成绩查询,保定2021年中考网上查询
  10. Linux Namespace机制简介
  11. python装饰器详解-python装饰器使用实例详解
  12. 仿Android6.0联系人列表
  13. java多数据源事务处理_springboot整合多数据源解决分布式事务
  14. 管理感悟:衡量境界的差异
  15. 如何对下载的文件进行MD5校验
  16. Hadoop之日志分析
  17. 2021-09-21用pyecharts做全球各个国家的gdp色彩深度图
  18. 斗破苍穹hd和java版区别_《斗罗大陆》和《斗破苍穹》的区别有哪些?
  19. 项目管理知识体系指南 (六)
  20. hs8346v5联通 说明书_请教hs8546v5更改华为界面正确方式

热门文章

  1. 使用下载工具internet download manager进行批量图片下载
  2. 自定义Android带图片和文字的ImageButton
  3. 分布式数据库SQL引擎之解析器
  4. 小程序二级页面自定义底部tabbar
  5. android原生和H5交互
  6. 前端面试心经一.题目
  7. 【毕设精选】算法类毕设相关系统
  8. 像科学家一样思考python_像计算机科学家一样思考Python(第2版)
  9. core i3、core m、atom x7之间的性能区别有多大 ?
  10. 移宇科技全院血糖管理系统与闭环人工胰腺系统助力患者血糖管理