wordpress 3.8.1分享 http://pan.baidu.com/s/1pJ4lTJ9
打开wp-admin/includes/file.php文件
找到wp_handle_upload这个函数,按照下面的代码进行修改.主要添加两行
在搜索到“
function wp_handle_upload( &$file, $overrides = false, $time = null ) {
”
找到下面两行,并在每行前面添加//
//Move the file to the uploads dir //$new_file = $uploads['path'] . "/$filename";(大概在306行)
找到 Move the file to the uploads dir 将它和下面哪行注解掉
然后添加"$new_file
=
$uploads
[
'path'
] .
"/"
. iconv(
"UTF-8"
,
"GB2312"
,
$filename
);
"
再找到
return apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ), 'upload' );
在这行前面加上//
在这行下面添加代码
return apply_filters( 'wp_handle_upload', array( 'file' => $uploads['path'] . "/$filename", 'url' => $url, 'type' => $type ) , 'upload');
一共修改3处前面添加//
添加两行代码
下面是添加后的文件
file.php
<?PHP
/ **
*功能的读,写,修改和删除文件系统上的文件。
*包括用于特定主题的文件,以及上载操作功能,
*存档,并渲染输出时必要的。
*
* @包WordPress的
* @分包管理
* /
/ **为主题文件的说明。* /
$ wp_file_descriptions = 阵列(
'的index.php' => __('主索引模板“ ),
'的style.css' => __('样式' ),
“主编的style.css' => __('可视化编辑样式表“ ),
“编辑器的风格,rtl.css' => __('可视化编辑器的RTL样式表“ ),
'rtl.css' => __('RTL样式表' ),
'的comments.php' => __('意见' ),
的意见,popup.php' => __('弹出式评论“ ),
'的footer.php' => __('尾' ),
'的header.php' => __('头' ),
'的sidebar.php' => __('边栏' ),
“archive.php文件' => __('档案' ),
“author.php' => __('作者模板' ),
“tag.php' => __('标签模板“ ),
“category.php' => __('分类模板' ),
“page.php' => __('页面模板“ ),
'的search.php' => __('搜索结果' ),
“searchform.php' => __('搜寻表“ ),
'的single.php' => __('单邮报“ ),
404。PHP' => __('404模板' ),
'link.php' => __('链接模板' ),
'的functions.php' => __('主题功能' ),
“p_w_upload.php' => __('附件模板“ ),
“p_w_picpath.php' => __('图片附件模板“ ),
“video.php' => __('视频附件模板“ ),
“audio.php' => __('音频附件模板“ ),
“application.php' => __('应用程序附件模板“ ),
“我- hacks.php' => __('我- hacks.php(传统***支持)' ),
'的。htaccess' => __('。htaccess文件(用于重写规则)' ),
/ /不推荐使用的文件
“WP-layout.css中' => __('样式' ),
“WP-comments.php文件' => __('评论模板“ ),
“WP-评论- popup.php' => __('弹出式评论模板“ ),
);
/ **
*获取标准的WordPress主题文件等各种标准的说明
* WordPress文件
*
* @自从1.5.0
*
* @使用_cleanup_header_comment
* @使用$ wp_file_descriptions
* @参数字符串$文件的文件系统路径或文件名
* @返回字符串的文件说明从$ wp_file_descriptions或$文件的基本名称,如果描述不存在
* /
功能 get_file_description($文件 ){
全球 $ wp_file_descriptions ;
如果 (使用isset($ wp_file_descriptions [ 基名($文件 )])){
返回 $ wp_file_descriptions [ 基名($文件 )];
}
ELSEIF (file_exists ($文件 )&& is_file ($文件 )){
$ template_data =破灭('' ,文件($文件 ));
如果 (的preg_match('|模板名称:(*)$ |英里' ,$ template_data ,$名称 ))
返回 的sprintf(__('%s的页面模板“ ),_cleanup_header_comment($名称[1]));
}
返回 修剪(基名($文件 ));
}
/ **
*获取绝对文件系统路径的WordPress安装的根目录
*
* @自从1.5.0
*
* @使用get_option
* @返回字符串完整的文件系统路径的WordPress安装的根目录
* /
功能 get_home_path(){
$ HOME = get_option( “ 家” );
$ SITEURL = get_option('SITEURL' );
如果 (!空($ HOME )&& 0!== strcasecmp ($ HOME ,$ SITEURL )){
$ wp_path_rel_to_home = str_ireplace ($ HOME ,'' ,$ SITEURL ); / * $ SITEURL - $ HOME * /
$ POS = strripos (str_replace函数('\ \' ,'/' ,$ _SERVER [ 'SCRIPT_FILENAME' ]),trailingslashit($ wp_path_rel_to_home ));
$ home_path = SUBSTR ($ _SERVER [ 'SCRIPT_FILENAME' ],0,$ POS );
$ home_path = trailingslashit($ home_path );
} 否则 {
$ home_path = ABSPATH;
}
返回 str_replace函数('\ \' ,'/' ,$ home_path );
}
/ **
*返回所有文件的指定文件夹中并上市的所有子目录多达100层。
*该递归的深度可以由$水平参数来控制。
*
* @自从2.6.0
*
*到文件夹@参数字符串$文件夹的完整路径
* @参数INT $级别的文件夹(可选)级别跟随,默认值:100(PHP循环限制)。
* @返回布尔|失败,文件,否则数组array假
* /
功能 list_files($文件夹 = '' ,$水平 = 100){
如果 (空($文件夹))
返回 FALSE;
如果 (!$的水平 )
返回 FALSE;
$文件 = 阵列();
如果 ($ DIR = @的opendir($文件夹 )){
而 (($文件 = READDIR($ DIR ))!== FALSE){
如果 (in_array($文件,数组('。' ,'..' )))
继续;
如果 (is_dir ($文件夹 。'/' 。$文件 )){
$ files2 = list_files($文件夹 。'/' ,$文件,$水平 - 1);
如果 ($ files2 )
$文件 = array_merge ($文件,$ files2 );
其他
$文件[] = $文件夹 。'/' 。$文件 。'/' ;
} 否则 {
$文件[] = $文件夹 。'/' 。$文件;
}
}
}
@ closedir ($ DIR );
返回 $文件;
}
/ **
*返回一个唯一的临时文件的文件名。
*请注意,调用函数必须取消链接(),这本身。
*
*文件名是根据关闭传递的参数或默认为当前Unix时间戳,
*在该目录既可以通过为好,或者留空白,默认为可写的临时目录。
*
* @自从2.6.0
*
* @参数字符串$文件名(可选)文件名来关闭基地的独特的文件
* @参数字符串$ DIR(可选)目录到文件存放在
* @返回字符串的可写文件名
* /
功能 wp_tempnam($文件名 = '' ,$ DIR = '' ){
如果 (空($ DIR ))
$ DIR = get_temp_dir();
$文件名 = 基名($文件名);
如果 (空($文件名))
$文件名 =时间();
$文件名 = preg_replace函数('| \ .. * $ |' ,'TMP' ,$文件名);
$文件名 = $目录 。wp_unique_filename($ DIR ,$文件名);
触摸($文件名);
返回 $文件名;
}
/ **
*确保被要求编辑该文件,允许进行编辑
*
*功能会死,如果你不允许编辑文件
*
* @自从1.5.0
*
* @使用wp_die
* @使用validate_file
* @参数字符串$文件文件中的用户尝试编辑
允许文件来编辑* @参数数组$ allowed_files数组,$文件必须的条目完全匹配
* @返回NULL
* /
功能 validate_file_to_edit($文件,$ allowed_files = '' ){
$代码 = validate_file($文件,$ allowed_files );
如果 (!$代码 )
返回 $文件;
开关 ($代码 ){
案例 1:
wp_die(__('对不起,不能在名称编辑文件“..”。如果你想编辑一个文件在你的WordPress主目录,你可以只输入名称该文件英寸' ));
/ /案例2:
/ / wp_die(__('抱歉,无法使用实际路径调用文件。'));
案例 3:
wp_die(__('对不起,该文件不能被编辑。' ));
}
}
/ **
*处理PHP上传在WordPress,消毒的文件名,检查扩展mime类型,
*和文件移动到相应的目录下上传目录中。
*
* @ 2.0起
*
* @使用wp_handle_upload_error
* @使用apply_filters
* @使用is_multisite
* @使用wp_check_filetype_and_ext
* @使用current_user_can
* @使用wp_upload_dir
* @使用wp_unique_filename
* @使用delete_transient
* @参数数组$文件参考$ _FILES中的一个元素。调用该函数一次为每个上传的文件。
* @参数数组$覆盖可选。名称=>值覆盖默认的变量提取物($覆盖,EXTR_OVERWRITE)的关联数组。
* @参数字符串$ time可选。时间在“年/月”的格式。
* @返回的数组成功后,返回文件属性的关联数组。如果失败,则返回$覆盖['upload_error_handler'](&$文件,$消息)或阵列('错误'=> $消息)。
* /
功能 wp_handle_upload(&$文件,$覆盖 = FALSE,$时间 = NULL){
/ /默认的错误处理程序。
如果 (!function_exists('wp_handle_upload_error' )){
功能 wp_handle_upload_error(&$文件,$消息 ){
返回 的数组('错误' => $消息 );
}
}
$文件 = apply_filters('wp_handle_upload_prefilter' ,$文件 );
/ /你可以定义你自己的函数,并通过在$覆盖['upload_error_handler']的名称
$ upload_error_handler = 'wp_handle_upload_error' ;
/ /你可能有一个或多个“wp_handle_upload_prefilter”功能错误出该文件。搞定优雅。
如果 (使用isset($文件[ '错误' ])&&!is_numeric ($文件[ '错误' ])&& $文件[ '错误' ])
返回 $ upload_error_handler ($文件,$文件[ '错误' ]);
/ /你可以定义你自己的函数,并通过在$覆盖['unique_filename_callback']的名称
$ unique_filename_callback = NULL;
/ / $ _POST ['行动']必须设置其值必须等于$覆盖['行动']或这个:
$行动 = 'wp_handle_upload' ;
php.net的/ /礼貌,描述错误的字符串表示在$ _FILES [{表单字段}] ['错误']。
$ upload_error_strings = 阵列(假的,
__( “ 上传的文件超过了php.ini中upload_max_filesize指令” ),
__( “ 上传的文件大小超过了HTML表单中指定的MAX_FILE_SIZE限制。” )
__( “ 上传的文件只有部分被上传。” )
__( “ 没有文件被上传。” )
'' ,
__( “ 缺少临时文件夹”。 )
__( “ 无法写入文件到磁盘” ),
__( “ 文件上传推而广之停止。” ));
/ /所有的测试都是在默认情况下。大多数可以通过$覆盖[{test_name}] = false来关闭;
$ test_form = TRUE;
$ test_size = TRUE;
$ test_upload = TRUE;
/ /如果重写此,您必须提供$分机和$型!!
$ test_type = TRUE;
$默剧 = FALSE;
/ /安装用户覆盖。我们提到这个空隙保修?
如果 (IS_ARRAY ($覆盖 ))
提取物($覆盖,EXTR_OVERWRITE);
/ /正确的表格后会通过这个测试。
如果 ($ test_form &&(isset(的!$ _POST [ '行动' ])| |($ _POST [ '行动' !] = $行动 )))
返回 call_user_func($ upload_error_handler ,$文件,__('无效的表单提交。' ));
/ /上传成功会通过这个测试。这是没有意义的覆盖这一个。
如果 ($文件[ '错误' ]> 0)
返回 call_user_func($ upload_error_handler ,$文件,$ upload_error_strings [ $文件[ '错误' ]);
/ /一个非空的文件将通过这个测试。
如果 ($ test_size &&!($文件[ '大小' ]> 0)){
如果 (is_multisite())
$ ERROR_MSG = __('文件为空,请上传有内容的。' );
其他
$ ERROR_MSG = __('文件为空,请上传一个实在的这个错误也可以通过上传功能已在你的php.ini或post_max_size设定比的upload_max_filesize在php.ini较小所致。' );
返回 call_user_func($ upload_error_handler ,$文件,$ ERROR_MSG );
}
/ /一个正确上传的文件将通过这个测试。不应该有任何理由来覆盖这一个。
如果 ($ test_upload &&!@ is_uploaded_file ($文件[ 'tmp_name的值' ]))
返回 call_user_func($ upload_error_handler ,$文件,__( “ 指定的文件没有通过上传测试。” ));
/ /正确的MIME类型会通过这个测试。覆盖$默剧或使用upload_mimes过滤器。
如果 ($ test_type ){
$ wp_filetype = wp_check_filetype_and_ext($文件[ 'tmp_name的值' ],$文件[ '名称' ],$默剧 );
提取物($ wp_filetype );
/ /检查是否wp_check_filetype_and_ext()确定的文件名是不正确的
如果 ($ proper_filename )
$文件[ '名称' ] = $ proper_filename ;
如果 ((!$类型 | |!$转 !)&& current_user_can('unfiltered_upload' ))
返回 call_user_func($ upload_error_handler ,$文件,__('对不起,该文件类型不允许出于安全考虑。“ ));
如果 (!$分机 )
$分机 = LTRIM(strrchr ($文件[ '名称' ],'。' ),'。' );
如果 (!$型 )
$型 = $文件[ “型” ];
} 否则 {
$型 = '' ;
}
/ /可写的上传目录将通过这个测试。再次,有没有点覆盖这一个。
如果 (!(($上传 = wp_upload_dir($时间))&&假=== $上传[ '错误' ]))
返回 call_user_func($ upload_error_handler ,$文件,$上传[ '错误' ]);
$时间= 日期(“YmdHis” ); $ type_change = 阵列('形象' => '。' ); $ FILE_TYPE = strtr ($文件[ '类型' ],$ type_change );
$文件[ '名称' ] = $的时间。“” 。mt_rand(1,100) “” 。$ FILE_TYPE ;
$时间= 日期(“YmdHis” ); $ type_change = 阵列('形象' => '。' ); $ FILE_TYPE = strtr ($文件[ '类型' ],$ type_change );
$文件[ '名称' ] = $时间。'' 。mt_rand(1,100)'' 。$ FILE_TYPE ;
$文件名 = wp_unique_filename($上传[ '路径' ],$文件[ '名称' ],$ unique_filename_callback );
/ /移动文件到上传目录
$文件名 = wp_unique_filename($上传[ '路径' ],$文件[ '名称' ],$ unique_filename_callback );
/ /移动文件到上传目录
/ / $ NEW_FILE = $上传['路径']。“/ $文件名”;
/ /修正中文文件名编码问题
$ NEW_FILE = $上传[ '路径' ]。“/” 。的iconv(“UTF-8” ,“GB2312” ,$文件名);
如果 (假=== @ move_uploaded_file($文件[ 'tmp_name的值' ],$ NEW_FILE )){
如果 (0 === strpos ($上传[ '的basedir' ],ABSPATH))
$ error_path = str_replace函数(ABSPATH,'' ,$上传[ 'BASEDIR' ])$上传[ '子目录' ];
其他
$ error_path = 基名($上传[ 'BASEDIR' ])。$上传[ '子目录' ];
返回 $ upload_error_handler ($文件,sprintf的(__('上传的文件无法被移动到%s' ),$ error_path ));
}
/ /设置正确的文件权限
$统计 =统计(目录名($ NEW_FILE ));
$烫发 = $统计[ '模式' ]&0000666;
@ CHMOD ($ NEW_FILE ,$烫发 );
/ /计算的URL
$ URL = $上传[ 'URL' ]。“/ $文件名 ” ;
如果 (is_multisite())
delete_transient('dirsize_cache' );
/ /返回apply_filters('wp_handle_upload',数组('文件'=> $ NEW_FILE,'URL'=> $网址,'型'=> $型),'上传');
/ /修正中文文件名编码问题
返回 apply_filters('wp_handle_upload' ,数组('文件' => $上传[ '路径' ]。“/ $文件名 ” ,“URL” => $网址,'型' => $型 ),'上传' );
}
/ **
*手柄侧向载荷,这是检索从另一台服务器的媒体项目,而不是过程
*传统媒体上传。这个过程涉及到消毒的文件名,扩展名检查
*对于MIME类型和文件移动到相应的目录下上传目录中。
*
* @自从2.6.0
*
* @使用wp_handle_upload_error
* @使用apply_filters
* @使用wp_check_filetype_and_ext
* @使用current_user_can
* @使用wp_upload_dir
* @使用wp_unique_filename
* @参数数组$文件类似于一个PHP $ _FILES POST数组的数组
* @参数数组$覆盖可选。名称=>值覆盖默认的变量提取物($覆盖,EXTR_OVERWRITE)的关联数组。
* @参数字符串$ time可选。时间在“年/月”的格式。
* @返回的数组成功后,返回文件属性的关联数组。如果失败,则返回$覆盖['upload_error_handler'](&$文件,$消息)或阵列('错误'=> $消息)。
* /
功能 wp_handle_sideload(&$文件,$覆盖 = FALSE,$时间 = NULL){
/ /默认的错误处理程序。
如果 (!function_exists('wp_handle_upload_error' )){
功能 wp_handle_upload_error(&$文件,$消息 ){
返回 的数组('错误' => $消息 );
}
}
/ /你可以定义你自己的函数,并通过在$覆盖['upload_error_handler']的名称
$ upload_error_handler = 'wp_handle_upload_error' ;
/ /你可以定义你自己的函数,并通过在$覆盖['unique_filename_callback']的名称
$ unique_filename_callback = NULL;
/ / $ _POST ['行动']必须设置其值必须等于$覆盖['行动']或这个:
$行动 = 'wp_handle_sideload' ;
php.net的/ /礼貌,描述错误的字符串表示在$ _FILES [{表单字段}] ['错误']。
$ upload_error_strings = 阵列(假的,
__( “ 上传文件超过在的upload_max_filesize code>的指令中的的php.ini code>的。” )
__( “ 上传的文件大小超过了HTML表单中指定的的 MAX_FILE_SIZE em>的指令”。 )
__( “ 上传的文件只有部分被上传。” )
__( “ 没有文件被上传。” )
'' ,
__( “ 缺少临时文件夹”。 )
__( “ 无法写入文件到磁盘” ),
__( “ 文件上传推而广之停止。” ));
/ /所有的测试都是在默认情况下。大多数可以通过$覆盖[{test_name}] = false来关闭;
$ test_form = TRUE;
$ test_size = TRUE;
/ /如果重写此,您必须提供$分机和$型!!
$ test_type = TRUE;
$默剧 = FALSE;
/ /安装用户覆盖。我们提到这个空隙保修?
如果 (IS_ARRAY ($覆盖 ))
提取物($覆盖,EXTR_OVERWRITE);
/ /正确的表格后会通过这个测试。
如果 ($ test_form &&(isset(的!$ _POST [ '行动' ])| |($ _POST [ '行动' !] = $行动 )))
返回 $ upload_error_handler ($文件,__('无效的表单提交。' ));
/ /上传成功会通过这个测试。这是没有意义的覆盖这一个。
如果 (!空($文件[ '错误' ]))
返回 $ upload_error_handler ($文件,$ upload_error_strings [ $文件[ '错误' ]);
/ /一个非空的文件将通过这个测试。
如果 ($ test_size &&!(文件大小($文件[ 'tmp_name的值' ])> 0))
返回 $ upload_error_handler ($文件,__('文件为空,请上传一个实在的这个错误也可以通过上传功能已在你的php.ini造成的。“ ));
/ /一个正确上传的文件将通过这个测试。不应该有任何理由来覆盖这一个。
如果 (!@ is_file ($文件[ 'tmp_name的值' ]))
返回 $ upload_error_handler ($文件,__('指定的文件不存在。' ));
/ /正确的MIME类型会通过这个测试。覆盖$默剧或使用upload_mimes过滤器。
如果 ($ test_type ){
$ wp_filetype = wp_check_filetype_and_ext($文件[ 'tmp_name的值' ],$文件[ '名称' ],$默剧 );
提取物($ wp_filetype );
/ /检查是否wp_check_filetype_and_ext()确定的文件名是不正确的
如果 ($ proper_filename )
$文件[ '名称' ] = $ proper_filename ;
如果 ((!$类型 | |!$转 !)&& current_user_can('unfiltered_upload' ))
返回 $ upload_error_handler ($文件,__('对不起,该文件类型不允许出于安全考虑。“ ));
如果 (!$分机 )
$分机 = LTRIM(strrchr ($文件[ '名称' ],'。' ),'。' );
如果 (!$型 )
$型 = $文件[ “型” ];
}
/ /可写的上传目录将通过这个测试。再次,有没有点覆盖这一个。
如果 (!(($上传 = wp_upload_dir($时间 ))&&假=== $上传[ '错误' ]))
返回 $ upload_error_handler ($文件,$上传[ '错误' ]);
$文件名 = wp_unique_filename($上传[ '路径' ],$文件[ '名称' ],$ unique_filename_callback );
/ /地带的查询字符串。
$文件名 = str_replace函数('?' ,' - ' ,$文件名);
$文件名 = str_replace函数('&' ,' - ' ,$文件名);
/ /移动文件到上传目录
$ NEW_FILE = $上传[ '路径' ] “/ $文件名 ” ;
如果 (假=== @重命名($文件[ 'tmp_name的值' ],$ NEW_FILE )){
如果 (0 === strpos ($上传[ '的basedir' ],ABSPATH))
$ error_path = str_replace函数(ABSPATH,'' ,$上传[ 'BASEDIR' ])$上传[ '子目录' ];
其他
$ error_path = 基名($上传[ 'BASEDIR' ])。$上传[ '子目录' ];
返回 $ upload_error_handler ($文件,sprintf的(__('上传的文件无法被移动到%s' ),$ error_path ));
}
/ /设置正确的文件权限
$统计 =统计(目录名($ NEW_FILE ));
$烫发 = $统计[ '模式' ]&0000666;
@ CHMOD ($ NEW_FILE ,$烫发 );
/ /计算的URL
$ URL = $上传[ 'URL' ]。“/ $文件名 ” ;
$回报 = apply_filters('wp_handle_upload' ,数组('文件' => $ NEW_FILE ,'URL' => $网址,'型' => $型 ),'侧向载荷' );
返回 $回报;
}
/ **
*下载总数的URL使用WordPress的HTTP类的本地临时文件。
*请注意,调用函数必须取消链接()的文件。
*
* @自从2.5.0
*
* @参数字符串$ url中文件的URL来下载
* @参数INT $超时的超时时间来下载文件默认300秒请求
* @返回失败,对成功的字符串文件名混合WP_Error。
* /
功能 DOWNLOAD_URL($网址,$超时 = 300){
/ /警告:该文件不会被自动删除,该脚本必须取消链接()的文件。
如果 (!$网址 )
返回 新 WP_Error('http_no_url' ,__('无效的URL提供。' ));
$ tmpfname = wp_tempnam($ URL );
如果 (!$ tmpfname )
返回 新 WP_Error('http_no_file' ,__('无法创建临时文件。' ));
$反应 = wp_safe_remote_get($网址,数组('超时' => $超时,'流' => true时,'文件名' => $ tmpfname ));
如果 (is_wp_error($响应 )){
取消链接($ tmpfname );
返回 $反应;
}
如果 (200!= wp_remote_retrieve_response_code($响应 )){
取消链接($ tmpfname );
返回 新 WP_Error('http_404' ,修剪(wp_remote_retrieve_response_message($响应 )));
}
$ content_md5 = wp_remote_retrieve_header($回应,“内容-MD5' );
如果 ($ content_md5 ){
$ md5_check = verify_file_md5($ tmpfname ,$ content_md5 );
如果 (is_wp_error($ md5_check )){
取消链接($ tmpfname );
返回 $ md5_check ;
}
}
返回 $ tmpfname ;
}
/ **
*计算和文件的MD5比较它的预期值。
*
* @自从3.7.0
*
* @参数字符串$文件名中的文件名来检查的MD5。
* @参数字符串$ expected_md5文件的MD5的预期,无论是base64编码的原始MD5或十六进制编码的MD5
* @返回布尔|失败,对成功的真,假目标WP_Error当MD5格式未知/意外
* /
功能 verify_file_md5($文件名,$ expected_md5 ){
如果 (32 == 的strlen ($ expected_md5 ))
$ expected_raw_md5 =包('H *' ,$ expected_md5 );
ELSEIF (24 == 的strlen ($ expected_md5 ))
$ expected_raw_md5 = base64_decode ($ expected_md5 );
其他
返回 FALSE; / /未知的格式
$ file_md5 = md5_file($文件名,真实);
如果 ($ file_md5 === $ expected_raw_md5 )
返回 真;
返回 新 WP_Error('md5_mismatch' ,sprintf的(__('该文件的校验和(%1 $ s)不符合预期的校验值(%2 $ s)的' ),BIN2HEX($ file_md5 ),BIN2HEX($ expected_raw_md5 )));
}
/ **
*解压缩指定的ZIP文件通过WordPress的文件系统抽象文件系统中的位置。
*假设条件是WP_Filesystem()已经被调用和设置。不提取根级__ MACOSX目录,如果存在的话。
*
*尝试解压缩之前增加PHP的内存限制为256M,
*然而,最需要的内存应不低于存档本身大得多。
*
* @自从2.5.0
*
* @参数字符串$文件的完整路径和zip压缩包的文件名
* @参数字符串$为全路径上的文件系统提取存档
* @返回失败混WP_Error,真正的成功
* /
功能 unzip_file($文件,$至){
全球 $ wp_filesystem ;
如果 (!$ wp_filesystem | |!IS_OBJECT ($ wp_filesystem ))
返回 新 WP_Error('fs_unavailable' ,__('无法访问文件系统。' ));
/ /解压缩可以使用大量的内存,但不是这么多的希望
@ 用ini_set (“memory_limit的' ,apply_filters('admin_memory_limit' ,WP_MAX_MEMORY_LIMIT));
$ needed_dirs = 阵列();
至$ = trailingslashit($到);
/ /判断所需的任何父目录的(升级目录)
如果 (!$ wp_filesystem - > is_dir ($到)){ / /只有当没有孩子存在做父母
$ PATH = preg_split('[/ \ \ \]!' ,untrailingslashit($到));
为 ($我 = 计数($路径); $ I > = 0,$ I - ){
如果 (空($路径[ $ I ]))
继续;
$ DIR =破灭('/' ,array_slice ($路径,0,$ I +1));
如果 (的preg_match('^ [AZ]:!$我' ,$ DIR ))/ /跳过它,如果它看起来像一个Windows盘符。
继续;
如果 (!$ wp_filesystem - > is_dir ($ DIR ))
$ needed_dirs [] = $目录;
其他
打破; / /一个文件夹存在,为此,我们不需要检查水平低于此
}
}
如果 (class_exists ('ZipArchive' )&& apply_filters('unzip_file_use_ziparchive' ,真)){
$结果 = _unzip_file_ziparchive($文件,$到,$ needed_dirs );
如果 (真=== $结果 ){
返回 $结果;
} ELSEIF (is_wp_error($结果)){
如果 ('incompatible_archive' =!$结果- > get_error_code())
返回 $结果;
}
}
/ /失败,进入PclZip如果ZipArchive不可用,或遇到错误打开文件。
返回 _unzip_file_pclzip($文件,$到,$ needed_dirs );
}
/ **
*此功能不应该被直接调用,使用unzip_file代替。尝试使用ZipArchive类来解压缩档案。
*假设条件是WP_Filesystem()已经被调用和设置。
*
* @自从3.0.0
* @见unzip_file
* @私人的访问
*
* @参数字符串$文件的完整路径和zip压缩包的文件名
* @参数字符串$为全路径上的文件系统提取存档
* @参数数组$ needed_dirs需要创建所需的文件夹中的部分列表。
* @返回失败混WP_Error,真正的成功
* /
功能 _unzip_file_ziparchive($文件,$到,$ needed_dirs = 阵列()){
全球 $ wp_filesystem ;
- Z = 新 ZipArchive();
$ zopen = $ - >打开($文件,ZIPARCHIVE :: CHECKCONS);
如果 (真的!== $ zopen )
返回 新 WP_Error('incompatible_archive' ,__('不兼容的存档。' ),数组('ziparchive_error' => $ zopen ));
$ uncompressed_size = 0;
为 ($我 = 0; $我 < $ - > numFiles; $ I + +){
如果 (!$信息 = $ - > statIndex($ I ))
返回 新 WP_Error('stat_failed_ziparchive' ,__('无法从归档中检索文件。' ));
如果 ('__MACOSX /' === SUBSTR ($信息[ '名称' ],0,9))/ /跳过OS X创建__ MACOSX目录
继续;
$ uncompressed_size + = $信息[ '大小' ];
如果 ('/' == SUBSTR ($信息[ '名称' ],-1))/ /目录
$ needed_dirs [] = $来 。untrailingslashit($信息[ '名称' ]);
其他
$ needed_dirs [] = $来 。untrailingslashit(目录名($信息[ '名称' ]));
}
/ *
* disk_free_space()可能返回false。假设任何falsey值是一个错误。
*具有零点免费字节的磁盘具有更大的问题。
*要求我们有足够的空间来解压缩文件,并复制其内容,有10%的缓冲区。
* /
如果 (定义('DOING_CRON' )&& DOING_CRON){
$ available_space = @ disk_free_space(WP_CONTENT_DIR);
如果 ($ available_space &&($ uncompressed_size * 2.1)> $ available_space )
返回 新 WP_Error('disk_full_unzip_file' ,__('无法复制文件,您可能已用完磁盘空间。' ),小巧('uncompressed_size' ,'available_space' ));
}
$ needed_dirs = array_unique ($ needed_dirs );
的foreach ($ needed_dirs 为 $ DIR ){
/ /检查文件夹的创建阵列内所有存在的父文件夹。
如果 (untrailingslashit($到)== $ DIR )/ /跳过的工作目录,我们知道这存在(或将会存在)
继续;
如果 (strpos ($ DIR ,$到)=== FALSE)/ /如果该目录不在工作目录中,跳过它
继续;
$ parent_folder =目录名($ DIR );
而 (!空($ parent_folder )&& untrailingslashit($到)!= $ parent_folder &&!in_array($ parent_folder ,$ needed_dirs )){
$ needed_dirs [] = $ parent_folder ;
$ parent_folder =目录名($ parent_folder );
}
}
ASORT($ needed_dirs );
/ /创建这些目录中,如果需要的话:
的foreach ($ needed_dirs 为 $ _dir ){
如果 (!$ wp_filesystem - > MKDIR ($ _dir ,FS_CHMOD_DIR)&&!$ wp_filesystem - > is_dir ($ _dir ))/ /只检查,看是否存在目录后,创建失败。更少的I / O这样的。
返回 新 WP_Error('mkdir_failed_ziparchive' ,__('无法创建目录' ),SUBSTR ($ _dir ,strlen的($到 )));
}
取消($ needed_dirs );
为 ($我 = 0; $我 < $ - > numFiles; $ I + +){
如果 (!$信息 = $ - > statIndex($ I ))
返回 新 WP_Error('stat_failed_ziparchive' ,__('无法从归档中检索文件。' ));
如果 ('/' == SUBSTR ($信息[ '名称' ],-1))/ /目录
继续;
如果 ('__MACOSX /' === SUBSTR ($信息[ '名称' ],0,9))/ /不要解压OS X创建__ MACOSX目录中的文件
继续;
$内容 = $ - > getFromIndex($ I );
如果 (假=== $内容 )
返回 新 WP_Error('extract_failed_ziparchive' ,__('无法从存档中提取文件。' ),$信息[ '名称' ]);
如果 (!$ wp_filesystem - > put_contents($到 ,$信息[ '名称' ],$内容,FS_CHMOD_FILE))
返回 新 WP_Error('copy_failed_ziparchive' ,__('无法复制文件。' ),$信息[ '名称' ]);
}
- Z - >关闭();
返回 真;
}
/ **
*此功能不应该被直接调用,使用unzip_file代替。尝试解压缩使用PclZip库存档。
*假设条件是WP_Filesystem()已经被调用和设置。
*
* @自从3.0.0
* @见unzip_file
* @私人的访问
*
* @参数字符串$文件的完整路径和zip压缩包的文件名
* @参数字符串$为全路径上的文件系统提取存档
* @参数数组$ needed_dirs需要创建所需的文件夹中的部分列表。
* @返回失败混WP_Error,真正的成功
* /
功能 _unzip_file_pclzip($文件,$到,$ needed_dirs = 阵列()){
全球 $ wp_filesystem ;
mbstring_binary_safe_encoding();
require_once (ABSPATH。'wp-admin/includes/class-pclzip.php' );
$归档 = 新 PclZip($文件);
$ archive_files = $归档- >提取物(PCLZIP_OPT_EXTRACT_AS_STRING);
reset_mbstring_encoding();
/ /是归档是否有效?
如果 (!IS_ARRAY ($ archive_files ))
返回 新 WP_Error('incompatible_archive' ,__('不兼容的存档。' ),$归档- > errorInfo中(真));
如果 (0 == 计数($ archive_files ))
返回 新 WP_Error('empty_archive_pclzip' ,__('空归档。' ));
$ uncompressed_size = 0;
/ /判断所需的任何儿童的目录(从归档中)
的foreach ($ archive_files 为 $文件 ){
如果 ('__MACOSX /' === SUBSTR ($文件[ '文件名' ],0,9))/ /跳过OS X创建__ MACOSX目录
继续;
$ uncompressed_size + = $文件[ '大小' ];
$ needed_dirs [] = $来 。untrailingslashit($文件[ '文件夹' ]?$文件[ '文件名' ]:目录名($文件[ '文件名' ]));
}
/ *
* disk_free_space()可能返回false。假设任何falsey值是一个错误。
*具有零点免费字节的磁盘具有更大的问题。
*要求我们有足够的空间来解压缩文件,并复制其内容,有10%的缓冲区。
* /
如果 (定义('DOING_CRON' )&& DOING_CRON){
$ available_space = @ disk_free_space(WP_CONTENT_DIR);
如果 ($ available_space &&($ uncompressed_size * 2.1)> $ available_space )
返回 新 WP_Error('disk_full_unzip_file' ,__('无法复制文件,您可能已用完磁盘空间。' ),小巧('uncompressed_size' ,'available_space' ));
}
$ needed_dirs = array_unique ($ needed_dirs );
的foreach ($ needed_dirs 为 $ DIR ){
/ /检查文件夹的创建阵列内所有存在的父文件夹。
如果 (untrailingslashit($到)== $ DIR )/ /跳过的工作目录,我们知道这存在(或将会存在)
继续;
如果 (strpos ($ DIR ,$到)=== FALSE)/ /如果该目录不在工作目录中,跳过它
继续;
$ parent_folder =目录名($ DIR );
而 (!空($ parent_folder )&& untrailingslashit($到)!= $ parent_folder &&!in_array($ parent_folder ,$ needed_dirs )){
$ needed_dirs [] = $ parent_folder ;
$ parent_folder =目录名($ parent_folder );
}
}
ASORT($ needed_dirs );
/ /创建这些目录中,如果需要的话:
的foreach ($ needed_dirs 为 $ _dir ){
/ /只检查,看是否存在目录后,创建失败。更少的I / O这样的。
如果 (!$ wp_filesystem - > MKDIR ($ _dir ,FS_CHMOD_DIR)&&!$ wp_filesystem - > is_dir ($ _dir ))
返回 新 WP_Error('mkdir_failed_pclzip' ,__('无法创建目录' ),SUBSTR ($ _dir ,strlen的($到 )));
}
取消($ needed_dirs );
/ /从zip解压缩档案
的foreach ($ archive_files 为 $文件 ){
如果 ($文件[ '文件夹' ])
继续;
如果 ('__MACOSX /' === SUBSTR ($文件[ '文件名' ],0,9))/ /不要解压OS X创建__ MACOSX目录中的文件
继续;
如果 (!$ wp_filesystem - > put_contents($至 。$文件[ '文件名' ],$文件[ '内容' ],FS_CHMOD_FILE))
返回 新 WP_Error('copy_failed_pclzip' ,__('无法复制文件。' ),$文件[ '文件名' ]);
}
返回 真;
}
/ **
*将文件从一个位置通过WordPress的文件系统提取一个目录到另一个。
*假设条件是WP_Filesystem()已经被调用和设置。
*
* @自从2.5.0
*
*从源代码目录@参数字符串$
* @参数字符串$到目标目录
* @参数数组$ skip_list文件/文件夹的列表跳过复制
* @返回混合WP_Error失败,真正的成功。
* /
功能 copy_dir(从$ ,$到,$ skip_list = 阵列()){
全球 $ wp_filesystem ;
$ dirlist中 = $ wp_filesystem - > dirlist中(从$ );
从$ = trailingslashit(从$ );
至$ = trailingslashit($到);
的foreach ((数组)$ dirlist中 的 $文件名 => $的FileInfo ){
如果 (in_array($文件名,$ skip_list ))
继续;
如果 ('F' == $的FileInfo [ '类型' ]){
如果 (!$ wp_filesystem - > 拷贝(从$ 。$文件名,$至 。$文件名,真实,FS_CHMOD_FILE)){
/ /如果复制失败,CHMOD文件0644,然后再试一次。
$ wp_filesystem - > 文件模式($到 ,$文件名,FS_CHMOD_FILE);
如果 (!$ wp_filesystem - > 复制(从$ 。$文件名,$至 。$文件名,真实,FS_CHMOD_FILE))
返回 新 WP_Error('copy_failed_copy_dir' ,__('无法复制文件。' ),$至 。$文件名 );
}
} elseif的 ('D' == $的FileInfo [ '类型' ]){
如果 (!$ wp_filesystem - > is_dir ($至 。$文件名)){
如果 (!$ wp_filesystem - > MKDIR ($到 ,$文件名,FS_CHMOD_DIR))
返回 新 WP_Error('mkdir_failed_copy_dir' ,__('无法创建目录' ),$至 。$文件名 );
}
/ /生成$ sub_skip_list的子目录作为子集的现有$ skip_list
$ sub_skip_list = 阵列();
的foreach ($ skip_list 为 $ skip_item ){
如果 (0 === strpos ($ skip_item ,$文件名 。'/' ))
$ sub_skip_list [] = preg_replace函数('!^' 。preg_quote($文件名,'!' )'!/我' ,'' ,$ skip_item );
}
$结果 = copy_dir($从 。$文件名,$至 。$文件名,$ sub_skip_list );
如果 (is_wp_error($结果))
返回 $结果;
}
}
返回 真;
}
/ **
*初始化并连接WordPress的文件系统抽象类。
*此功能将包括所选择的传输,并尝试连接。
*
*插件可以添加额外的运输,并迫使由WordPress的通过“filesystem_method_file'过滤器返回的文件名来使用它们。
*
* @自从2.5.0
*
* @参数数组的$ args(可选)连接参数时,这些都直接传递给WP_Filesystem_ *()类。
* @参数字符串$上下文(可选)语境get_filesystem_method(),参见函数的声明获取更多信息。
* @返回布尔值false失败,对成功的真正
* /
功能 WP_Filesystem(的$ args = FALSE,$上下文 = FALSE){
全球 $ wp_filesystem ;
require_once (ABSPATH。'wp-admin/includes/class-wp-filesystem-base.php' );
$方法 = get_filesystem_method(的$ args ,$上下文);
如果 (!$方法 )
返回 FALSE;
如果 (!class_exists (“WP_Filesystem_ $方法” )){
$ abstraction_file = apply_filters('filesystem_method_file' ,ABSPATH。“wp-admin/includes/class-wp-filesystem-' 。$方法 。'PHP' ,$方法);
如果 (!file_exists ($ abstraction_file ))
返回;
require_once ($ abstraction_file );
}
$方法 = “WP_Filesystem_ $法” ;
$ wp_filesystem = 新的 方法$ (的$ args );
/ /定义超时的连接。在构造了唯一可用的后允许每个传输覆盖默认的。
如果 (!定义('FS_CONNECT_TIMEOUT' ))
DEFINE('FS_CONNECT_TIMEOUT' ,30);
如果 (!定义('FS_TIMEOUT' ))
DEFINE('FS_TIMEOUT' ,30);
如果 (is_wp_error($ wp_filesystem - >错误)&& $ wp_filesystem - >错误- > get_error_code())
返回 FALSE;
如果 (!$ wp_filesystem - >连接())
返回 FALSE; / /无法连接到服务器时发生错误。
/ /设置权限常量,如果尚未设置。
如果 (!定义('FS_CHMOD_DIR' ))
DEFINE('FS_CHMOD_DIR' ,(fileperms (ABSPATH)及0777 | 0755));
如果 (!定义('FS_CHMOD_FILE' ))
DEFINE('FS_CHMOD_FILE' ,(fileperms (ABSPATH。 “ 的index.php” )及0777 | 0644));
返回 真;
}
/ **
*确定文件系统的方法来使用的。
*的传输的优先级是:直接,SSH2,FTP PHP扩展,FTP套接字(通过套接字类,或的fsockopen())
*
*请注意,这个函数的返回值可以通过2种方式来覆盖
* - 通过你的的的wp-config.php文件 code>文件定义FS_METHOD
* - 通过使用filesystem_method过滤器
*这些有效值是:“直接”,“SSH”,“ftpext'或'ftpsockets”
*插件也可以定义自定义传输处理程序,请参阅WP_Filesystem功能的更多信息。
*
* @自从2.5.0
*
* @参数数组的$ args连接的详细信息。
* @参数字符串$上下文完整路径是为是可写的测试的目录。
* @返回字符串的传输使用,看说明有效的返回值。
* /
功能 get_filesystem_method(的$ args = 阵列(),$上下文 = FALSE){
$方法 =定义('FS_METHOD' )?FS_METHOD:假; / /请确保这是不是“直接”,“SSH”,“ftpext'或'ftpsockets”
如果 (!$方法 && function_exists('getmyuid' )&& function_exists('fileowner' )){
如果 (!$上下文 )
$上下文 = WP_CONTENT_DIR;
/ /如果目录不存在(wp-content/languages),然后使用父目录,我们将创建它。
如果 (WP_LANG_DIR == $上下文 &&!is_dir ($上下文 ))
$上下文 =目录名($范围内 );
$上下文 = trailingslashit($范围内);
$ temp_file_name = $上下文 。“温度-写-测试' 。时间();
$ temp_handle = @ 的fopen ($ temp_file_name ,'W' );
如果 ($ temp_handle ){
如果 (getmyuid ()== @ fileowner ($ temp_file_name ))
$方法 = “直接” ;
@ FCLOSE($ temp_handle );
@的unlink($ temp_file_name );
}
}
如果 (!$方法 &&使用isset(的$ args [ 'connection_type' ])&& '的ssh' == 的$ args [ 'connection_type' ] && extension_loaded ('SSH2' )&& function_exists('stream_get_contents' ))$方法 = “SSH2” ;
如果 (!$方法 && extension_loaded ('FTP' ))$方法 = 'ftpext' ;
如果 (!$方法 &&(extension_loaded ('插座' |)| function_exists('的fsockopen' )))$方法 = 'ftpsockets' ,/ /套接字:套接字扩展,PHP的模式:的fsockopen / fwrite的/ FREAD
返回 apply_filters('filesystem_method' ,$方法,的$ args );
}
/ **
*显示一个表单给用户,要求为他们的FTP / SSH的详细信息,以便连接到文件系统。
*所有选择/输入的详细信息被保存,但不包括密码。
*
*主机名可以是主机名的形式为:端口号(如:wordpress.org:2467)来指定一个备用的FTP / SSH端口。
*
通过在 request_filesystem_credentials假 code>的过滤器| *插件可以通过返回true覆盖此表格。
*
* @自从2.5.0
*
* @参数字符串$ form_post张贴形式的URL
* @参数字符串$类型中使用所选择的文件系统的方法
* @参数布尔值$错误,如果当前请求无法连接
* @参数字符串$上下文所需要访问的目录,在写测试将在这个目录由get_filesystem_method执行()
* @参数字符串$ extra_fields应检查被列入后额外的POST领域。
* @返回失败布尔值false。真正的成功。
* /
功能 request_filesystem_credentials($ form_post ,$型 = '' ,$错误 = FALSE,$上下文 = FALSE,$ extra_fields = NULL){
$ req_cred = apply_filters('request_filesystem_credentials' ,'' ,$ form_post ,$型,$错误,$背景下,$ extra_fields );
如果 ('' !== $ req_cred )
返回 $ req_cred ;
如果 (空($型))
$型 = get_filesystem_method(阵列(),$上下文);
如果 ('直接' == $型 )
返回 真;
如果 (is_null ($ extra_fields ))
$ extra_fields = 阵列('版本' ,'区域' );
$凭据 = get_option('ftp_credentials' ,数组('主机' => '' ,'用户名' => '' ));
/ /如果定义,将其设置为,否则,如果POST'd,将其设置为,如果不是,将它设置为不管它以前是(在保存选项的详细信息)
$凭据[ '主机名' ] =定义('FTP_HOST' )?(!:FTP_HOST 空($ _POST [ '主机名' ?])wp_unslash($ _POST [ '主机名' ]):$凭据[ '主机名' ]);
$凭据[ '用户名' ] =定义('FTP_USER' )?FTP_USER:(!空($ _POST [ '用户名' ?])wp_unslash($ _POST [ '用户名' ]):$凭据[ '用户名' ]);
$凭据[ '密码' ] =定义('FTP_PASS' )?FTP_PASS:(!空($ _POST [ “密码” ])wp_unslash(?$ _POST [ “密码” ]):'' );
/ /检查我们是否设置公共/私有密钥的ssh
$凭据[ 'PUBLIC_KEY' ] =定义('FTP_PUBKEY' )?FTP_PUBKEY:(!空($ _POST [ 'PUBLIC_KEY' ?])wp_unslash($ _POST [ 'PUBLIC_KEY' ]):' );
$凭据[ '的private_key' ] =定义('FTP_PRIKEY' )?(!:FTP_PRIKEY 空($ _POST [ '的private_key' ?])wp_unslash($ _POST [ '的private_key' ]):' );
/ /消毒的主机名,有些人可能会通过在奇数据:
$凭据[ '主机名' ] = preg_replace函数('| \ W + :/ / |' ,'' ,$凭据[ '主机名' ]); / /带任何计划关闭
如果 (strpos ($凭据[ '主机名' ],':' )){
列表($凭据[ '主机名' ],$凭据[ '口' ])= 爆炸(':' ,$凭据[ '主机名' ],2);
如果 (!is_numeric ($凭据[ '口' ]))
取消($凭据[ '口' ]);
} 否则 {
取消($凭据[ '口' ]);
}
如果 ((定义('FTP_SSH' )&& FTP_SSH)| |(定义('FS_METHOD' )&& '的ssh' == FS_METHOD))
$凭据[ 'connection_type' ] = 'ssh的' ;
否则 ,如果 ((定义('FTP_SSL' )&& FTP_SSL)&& 'ftpext' == $型 )/ /只有FTP扩展SSL的理解
$凭据[ 'connection_type' ] = 'FTPS' ;
否则 ,如果 (!空($ _POST [ 'connection_type' ]))
$凭据[ 'connection_type' ] = wp_unslash($ _POST [ 'connection_type' ]);
否则 ,如果 (!使用isset($凭据[ 'connection_type' ]))/ /所有的都失败了(而且它不拖欠别的东西保存),默认为FTP
$凭据[ 'connection_type' ] = 'ftp的' ;
如果 (!$错误 &&
(
(!空($凭据[ '密码' !])&& 空($凭据[ '用户名' !])&& 空($凭据[ '主机名' ]))| |
(“SSH” == $凭据[ 'connection_type' ] &&!空($凭据[ 'PUBLIC_KEY' ])&&!空($凭据[ '的private_key' ]))
)){
$ stored_credentials = $凭据;
如果 (!空($ stored_credentials [ '口' ]))/ /保存端口作为主机名来简化上面的代码的一部分。
$ stored_credentials [ '主机名' ] =。':' 。$ stored_credentials [ '口' ];
unset( $stored_credentials [ 'password' ], $stored_credentials [ 'port' ], $stored_credentials [ 'private_key' ], $stored_credentials [ 'public_key' ]);
update_option('ftp_credentials' ,$ stored_credentials );
返回 $凭据;
}
$主机 = '' ;
$用户名 = '' ;
$密码 = '' ;
$ connection_type = '' ;
如果 (!空($凭据))
提取物($凭据,EXTR_OVERWRITE);
如果 ($错误 ){
$ ERROR_STRING = __('。错误: STRONG>无法连接到服务器时发生错误,请检查设置是否正确' );
如果 (is_wp_error($错误))
$ ERROR_STRING = esc_html($错误- > get_error_message());
回声 “ ' 。$ ERROR_STRING 。“ P> DIV>' ;
}
$类型 = 阵列();
如果 (extension_loaded ('FTP' )| | extension_loaded ('插座' )| | function_exists('的fsockopen' ))
$类型[ 'FTP' ] = __('FTP' );
如果 (extension_loaded ('FTP' ))/ /只有这个支持FTPS
$类型[ 'FTPS' ] = __('FTPS(SSL)' );
如果 (extension_loaded ('SSH2' )&& function_exists('stream_get_contents' ))
$类型[ 'ssh的' ] = __('SSH2' );
$类型 = apply_filters('fs_ftp_connection_types' ,$种,$凭据,$型,$错误,$上下文);
?>
<脚本类型= “文/ JavaScript的” >
<! -
jQuery的(函数($){
的jQuery( “#ssh 的” )。点击(函数 (){
的jQuery( “#ssh_keys” 。)的show();
});
的jQuery( “#FTP,FTPS#” )。点击( 函数 (){
的jQuery( “#ssh_keys” )的hide();
});
的jQuery( “ 表单输入[值=”“]:第一个' )。对焦();
});
- >
SCRIPT>
<形式的行动= “<?PHP的回声esc_url($ form_post)?>” 方法= “POST” >
<?的php _e('连接信息' )?> H3>
<?PHP
$ label_user = __('用户名' );
$ label_pass = __('密码' );
_e('要执行所请求的操作,WordPress的需要访问您的Web服务器。' );
回声 “” ;
如果 ((使用isset($类型[ 'FTP' ])| | isset(的$种[ 'FTPS' ]))){
如果 (使用isset($类型[ 'ssh的' ])){
_e('请输入您的FTP或SSH认证来进行。' );
$ label_user = __('FTP / SSH用户名' );
$ label_pass = __('FTP / SSH密码' );
} 否则 {
_e('请输入您的FTP凭据以继续。' );
$ label_user = __('FTP用户名' );
$ label_pass = __('FTP密码' );
}
回声 “” ;
}
_e('如果你不记得您的凭据,您应该联系您的虚拟主机。' );
?> P>
<表类= “表单表” >
<个范围= “行” > <标签为= “主机名” > <?php的_e('主机名' )?> 标签> 次>
<输入名称= “主机名” 类型= “文本” ID = “主机名” 值= “ ? 大小= “40” /> TD>
TR>
<个范围= “行” > <标签为= “用户名” > 标签> 次>
<输入名称= “用户名” 类型= “文本” 的id = “username”的 值= “?” 大小= “40” /> TD>
TR>
<个范围= “行” > <标签为= “密码” > 标签> 次>
<输入名称= “密码” 类型= “密码” ID = “密码” 值= “” <?php的禁用(定义('FTP_PASS' ));?>大小= “40” /> DIV>
的 <?PHP 如果 (定义(!'FTP_PASS“ _e())'这个密码将不被存储在服务器上。' );?> EM> DIV> TD>
TR>
<?的PHP 如果 (使用isset($类型[ 'ssh的' ])):?>
“ >
<个范围= “行” > <?php的_e('认证密钥' )?>
<格类= “键标签textright” >
<标签为= “PUBLIC_KEY” > 标签>
<标签为= “的private_key” > 标签>
DIV> 次>
<输入名称= “PUBLIC_KEY” 类型= “文本” ID = “PUBLIC_KEY” 值= “<?PHP的回声esc_attr($ PUBLIC_KEY)?>” <?php的禁用(定义('FTP_PUBKEY' ) );?>大小= “40” />
<输入名称= “的private_key” 类型= “文本” ID = “的private_key” 值= “?” <?PHP禁用(定义('FTP_PRIKEY' ));?> 大小= “40” />
<?的php _e('服务器所在的键位于输入位置,如果需要密码,输入的密码字段上面。' )?> DIV> TD>
TR>
<?php的ENDIF ;?>
<个范围= “行” > <?php的_e( “ 连接类型” )?> 次>
加上