




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WordPress代码和分析-从主题开始文件/wp-admin/theme-install.php1、wp_die(_()函数分析12if( ! current_user_can(install_themes) ) /判断是否有安装主题的权限wp_die(_(You do not have sufficient permissions to install themes on this site.);wp_die函数在“wp-includes/function.php”文件内,作用是 终止PHP代码的执行并显示HTML格式的消息提示。这个方法是用来代替PHP函数die,区别在于这个方法支持HTML代码。die在PHP中是退出当前程序并输出一段消息。“_(”是个什么函数呢?这个函数在“load-script.php”、“load-style.php”、”l10.php”等文件中出现定义了。在”load-script.php”、”load-style.php”中,function _() 都是定义的空函数。在theme-install.php文件中是引用的“l10.php”文件的“_()”函数的。他们的文件包含关系如下:在l10.php中,“_()”函数是这样定义的:123function_( $text, $domain= default) returntranslate( $text, $domain);其中translate是一个应用在多语言环境下的翻译函数。(猜测的)WordePress对很多PHP系统自带的函数进行了包装,利用代理模式来解决PHP版本升级和PHP内置函数改变所带来的影响。2、wp_reset_vars( array(tab, paged) )分析wp_reset_vars是一个重新设置全局变量的函数,具体代码如下:/wp-admin/includes/misc.php123456789101112131415functionwp_reset_vars( $vars) for( $i=0; $icount( $vars); $i+= 1 ) $var= $vars$i;global$var;if( empty( $_POST$var ) ) if( empty( $_GET$var ) )$var= ;else$var= $_GET$var; else$var= $_POST$var;在theme-install.php中执行完wp_reset_vars( array(tab, paged) )后,如果$_POST“tab”或者$_GET“tab”有值得话,我们将会得到一个以$_POST“tab”或者$_GET“tab”值为变量的全局变量,如果没有值的话,将会清楚全局变量。在这个函数中,有一个global $var这个定义比较费解。我写了个简单的测试代码搞明白了是什么意思:123$var=abc;$var=12;echo($abc);1这段代码输出的结果就是12。1WordPress代码非常复杂,下次继续分析wp_enqueue_style和wp_enqueue_script的作用玩转WordPress配置文件WordPress用户都知道,wp-config.php 文件是WordPress数据库的关键。数据库名、用户名、密码、位置都是在此设置。但是很多用户并不知道通过wp-config.php文件可以更改很多设置,提高WordPress站点的功能、性能、安全度。在这里,这里跟大家分享下使用wp-config.php的技巧。数据库信息WordPress链接数据库需设定以下四个值:define(DB_NAME, database-name);define(DB_USER, database-username);define(DB_PASSWORD, database-password);define(DB_HOST, localhost);在创建数据库前就需准备好数据库名称、用户名、密码,最后一个DB_HOST值可能比较难获得,最常见的是直接用“localhost”, 甚至你可以给数据库服务器指定一个备用端口。例如:define(DB_HOST, localhost:1234);define(DB_HOST, mysql.domain.tld:1234);还有一种更好的方法就是自动检测数据库服务器值:define(DB_HOST, $_ENVDATABASE_SERVER);如果上面所有方法都行不通,求助你的服务器提供商。数据库字符集和整理(collation)截至WordPress 2.2版,你可以给MySQL数据库指定字符集。一般来说,不需要修改默认字符集UTF-8,因为它支持所有的语言。注意,如果wp-config.php文件里,这一字符集已经存在,你只能使用此字符集。下面是默认的设置,也是我推荐大家使用的设置:define(DB_CHARSET, utf8);WordPress 2.2 版本还可以指定collation(校勘/整理),对你的数据库字符集排序。Collation的设置通常由MySQL依据字符集自动处理的,在默认设置里的collation值保留空白就可以。默认的设置:define(DB_COLLATE, );安全密匙截至WordPress 2.7后有四个安全密匙来加密cookies。这些密匙只需让它默默无闻地工作就好,并尽可能随意和复杂(你无需记住)。生成这些密匙的最简单方法就是通过WordPress官方密匙服务来自动生成。只要点击这个服务,复制并粘贴生成的结果到wp-config.php 文件中即可。注意,这些密匙可随时更改,这样一来,用户之前的cookies会被清除需要重新登陆你的网站。define(AUTH_KEY, :dr+%/5V4sAUG-gg%aS*v;&xGhd%YV)p:Qi?jXLq,h39);define(SECURE_AUTH_KEY, *+S=8+m#+V)p:Qi?jXLq,h39m_();define(LOGGED_IN_KEY, SAACm4h1;TqW3_8Zv!Ji=y|)5i63JI |Al(6L9v6C89NH?ui*3(t09mumL/fF);数据库前缀数据库前缀的设置对提高你的站点安全以及在同一数据库中安装多个WordPress站点都非常有用,通过改变默认值“wp_” 为随机独一的值,可减轻站点受攻击的可能性,总体上提高你的网站安全性。下面是默认值:$table_prefix = wp_;有很多攻击者就是对准这些默认前缀的数据库进行攻击。稍微修改为如: “x777_”之类的可避免此类攻击。你还可以使用此设置实现在一个数据库中安装多个WordPress站点,只要给每一个WordPress指定一个单独的数据库前缀即可:$table_prefix = wp1_; / 第一个博客$table_prefix = wp2_; / 第二个博客$table_prefix = wp3_; / 第三个博客语言设置WordPress可指定一个语言翻译文件及其相关的目录。语言翻译文件属于 “.mo” 这一类别,其默认位置是 (如果没有明确指定的路径) wp-content/languages (第一)和wp-includes/languages (第二)。下面是默认设置:define(WPLANG, );define(LANGDIR, );目录设置技术上来说,你不太需要关注它。默认的wp-config.php 文件里有几行指定绝对路径并且包含设置文件。我这里提出来,只是为了使这篇文章更完整些:/* WordPress absolute path to the Wordpress directory. */if ( !defined(ABSPATH) )define(ABSPATH, dirname(_FILE_) . /);/* Sets up WordPress vars and included files. */require_once(ABSPATH . wp-settings.php);博客地址和网站地址默认的p-config.php中不包含这两个定义,不过为了改善WordPress的性能,还是需要添加的。这两个设置是在2.2版本引进来的。在wp-config.php 中添加者两个定义可降低数据库查询数,提高网站的运行。这些设置需与你的WordPress Admin中的设置一致。下面是一个例子 (所有URL地址不以斜线结尾):define(WP_HOME, );define(WP_SITEURL, );可以使用全局变量动态地设置这些值:define(WP_HOME, http:/.$_SERVERHTTP_HOST./path/to/wordpress);define(WP_SITEURL, http:/.$_SERVERHTTP_HOST./path/to/wordpress);模板路径和样式表路径设定好博客地址和网站地址后,你还可以通过剔除对模板路径和样式表路径的数据库查询,这样可提高站点的性能。下面是默认的值:define(TEMPLATEPATH, get_template_directory();define(STYLESHEETPATH, get_stylesheet_directory();尽管数据库查询还存在,但我们可以减少多余的查询:define(TEMPLATEPATH, /absolute/path/to/wp-content/themes/active-theme);define(STYLESHEETPATH, /absolute/path/to/wp-content/themes/active-theme);禁用缓存和缓存有效期这两个都是针对旧版本的WordPress,还在使用默认的基于对象的缓存机制。第一个选项是启用或禁用缓存。第二个定义让你指定缓存的到期时间。启用缓存define(WP_CACHE, true); / 启用缓存define(ENABLE_CACHE, true); / 启用缓存define(CACHE_EXPIRATION_TIME, 3600); / 单位秒禁用缓存define(WP_CACHE, false); /禁用缓存define(DISABLE_CACHE, true); / 禁用缓存指定cookies域会由于很多原因你需要给站点指定cookies域。比较常见的就是阻止子域名上请求静态内容的cookies不必要的传输。这种情况下,你就可以使用此定义告知WordPress只向非静态域发送cookies,这将会大大提高网站的性能。下面是设置各种cookies路径和域的信息:define(COOKIE_DOMAIN, .); / 别漏了前面的.。define(COOKIEPATH, preg_replace(|https?:/+|i, , get_option(home)./);define(SITECOOKIEPATH, preg_replace(|https?:/+|i, , get_option(siteurl)./);define(PLUGINS_COOKIE_PATH, preg_replace(|https?:/+|i, , WP_PLUGIN_URL);define(ADMIN_COOKIE_PATH, SITECOOKIEPATH.wp-admin);覆盖文件权限如果你的虚拟主机默认文件权限非常严格,在WordPress配置文件里添加这些定义就可以解决这个问题。注意,数值不需要用引号引起来。下面是例子:define(FS_CHMOD_FILE, 0755);define(FS_CHMOD_DIR, 0755);查看所有已定义的常量需要查看所有已定义的常量吗?用下面的PHP函数就会得到一个所有当前一定义常数的数组:print_r(get_defined_constants();自定义用户和usermeta 表你也可以通过下面的定义自定义用户和usermeta表:define(CUSTOM_USER_TABLE, $table_prefix.my_users);define(CUSTOM_USER_META_TABLE, $table_prefix.my_usermeta);FTP/SSH常量这类定义是用于帮助用户定位和实现FTP/SSH连接。下面是例子:define(FS_METHOD, ftpext); / 文件系统的方式,包括: direct、ssh、ftpext和ftpsocketsdefine(FTP_BASE, /path/to/wordpress/); / 安装根目录的绝对路径define(FTP_CONTENT_DIR, /path/to/wordpress/wp-content/); / 到wp-content 目录的绝对路径define(FTP_PLUGIN_DIR , /path/to/wordpress/wp-content/plugins/); / 到wp-plugins 目录的绝对路径define(FTP_PUBKEY, /home/username/.ssh/id_rsa.pub); / 到SSH公匙的绝对路径define(FTP_PRIVKEY, /home/username/.ssh/id_rsa); /到SSH密匙的绝对路径define(FTP_USER, username); / FTP 或SSH用户名define(FTP_PASS, password); / FTP用户密码define(FTP_HOST, ftp.domain.tld:21); /主机名:你的SSH/FTP服务器端口移动wp-content 目录从2.6版本开始,你可以修改wp-content目录的位置。这么做有几个理由,包括可提高网站的安全性,以及便于FTP更新。下面是例子:/ 当前目录的完全本地路径(结尾不包括斜杠)define(WP_CONTENT_DIR, $_SERVERDOCUMENT_ROOT./path/wp-content);/ 当前目录的完整URL(结尾不包括斜杠)define(WP_CONTENT_URL, http:/domain.tld/path/wp-content);你也可以另外给wp-content 目录指定一个自定义路径。可以解决一些插件的兼容性问题:/当前目录的完全本地路径(结尾不包括斜杠)define(WP_PLUGIN_DIR, $_SERVERDOCUMENT_ROOT./path/wp-content/plugins);/当前目录的完整URL(结尾不包括斜杠)define(WP_PLUGIN_URL, http:/domain.tld/path/wp-content/plugins);日志修订版的处理Worepress最新版本提供了一个发布后修改系统,用户可保存不同的博客版本,甚至,如果有需要的话,还可以恢复到先前保存的博客版本。不管你喜欢还是不喜欢这个功能,下面的设置可能都对你有帮助。限制保存博客版本的数量define(WP_POST_REVISIONS, 3); / 任意整数,不过不要太夸张。禁用修订版功能define(WP_POST_REVISIONS, false);指定自动保存间隔跟发布版本功能类似,WordPress其实使用了自动保存功能。默认情况下,WordPress每一分钟自动保存你的作品,不过你完全可以根据需要改变这个数值。不过也注意不要太夸张,以免破坏了你的服务器。define(AUTOSAVE_INTERVAL, 160); / 单位秒调试WordPress自从2.3.1版本以来,有一些错误和警告提示帮助用户调试网站。截止2.5版本, 报错等级提高到E_ALL并有激活对一些函数的警告功能。默认(即,没有在wp-config.php文件中指定任何定义),错误报告被禁用。define(WP_DEBUG, true); / 启用调试模式define(WP_DEBUG, false); / 禁用调试模式(默认)错误日志配置下面是启用WordPress站点错误日志的一种简单方法。创建一个名为“php_error.log”的文件,使其对服务器可写,并将其放置在你选择的目录下。接着在下面代码中第三行编辑路径,并加入wp-config.php 中:ini_set(log_errors,On);ini_set(display_errors,Off);ini_set(error_log,/home/path/domain/logs/php_error.log);增加PHP内存如果你收到错误提示“允许的内存xxx字节已用尽” ,这个设置就对你有帮助了。截至WordPress的2.5版,WP_MEMORY_LIMIT定义,你可以指定PHP使用的最大内存。默认情况下,最大PHP内存是32兆,因此只有要求大于32兆是菜需要更改此设置。注意,有些虚拟主机禁止你提高PHP 内存,所以你得请求他们帮忙。下面是例子:define(WP_MEMORY_LIMIT, 64M);define(WP_M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 进行性肌萎缩的临床护理
- 2025员工外派合同范文
- 上思县高考试卷真题及答案
- 山西2017中考理综试卷及答案
- 三选一中考试卷及答案
- 2025版关于个人借款合同范本
- 2025太阳能光伏发电系统安装合同范本
- 商业服务机器人的经济效益分析考核试卷
- 2025物业服务合同版范本
- 自动售货机行业市场细分与定位考核试卷
- 科学控糖与健康体重管理
- 2025年江苏省南京市中考《二次函数综合》专题复习讲义
- 2025年广东省高三高考模拟测试二生物试卷(有答案)
- 安全生产材料购买合同协议
- 桥梁工程施工检验测试计划
- 四川农商银行招聘笔试真题2024
- 右足底皮肤裂伤护理查房
- 淘宝商家押金协议书
- 2025年普通高中学业水平选择性考试冲刺压轴卷一英语试卷(含答案)
- 血液检验 3.2017-正常骨髓细胞形态学-陈学东-20170515173650 学习资料
- 陕西师大附中2025年高三5月总复习质检(二模)生物试题含解析
评论
0/150
提交评论