天天看点

精通WORDPRESS设计与开发:第4章 探索WORDPRESS CORE

本章内容

➤探索WordPress内核文件

➤搜索内核文件作为参考

➤使用WordPress Codex

➤浏览WordPress代码参考

➤理解内联文档

要理解如何正确地扩展WordPress,首先必须了解WordPress Core功能。这将帮助你了解WordPress Core中有哪些工具可以让你的生活更轻松。WordPress为你处理了大部分繁琐的编码和逻辑问题。WordPress Core是学习WordPress如何工作的最好资源。开源软件的美妙之处在于你可以使用所有的代码。如果你不确定WordPress函数的某个方面是如何实现的,那就开始钻研代码吧!答案都在那里;这只是一个发现和理解他们的问题。

Core里有什么?WordPress Core是由一组文件驱动的,这些文件是原始的WordPress软件包的一部分。这些都是WordPress正常运行所需要的“ Core”文件。 Core文件预计只有当你将WordPress升级到一个新版本时才会改变。 Core不包括插件、主题、数据库设置、.htaccess文件等自定义文件。 Core也不包括任何你上传到WordPress的媒体。基本上,任何安装后添加到WordPress的文件都被认为是Core之外的。

WordPress Core文件主要是PHP文件,但也包含CSS、JavaScript、HTML和图像文件。这些文件控制关于WordPress的一切,包括如何生成内容页面来显示,加载已配置的主题和插件,加载所有选项和设置,等等。简而言之, Core包含几个主要的功能类型:

  • 帖子、页面和自定义内容——在WordPress中创建、存储、检索和大部分与你的内容交互。第5章中关于控制内容显示和排序的循环的讨论很大程度上依赖于这些函数。
  • 帖子类型、分类和元数据——从自定义帖子类型、标签、类别到用户创建的分类。所使用的数据模型将在第7章中讨论。
  • 主题-支持WordPress主题的功能。主题的发展及其与这些功能的关系在第9章中进行了讨论。
  • 动作,过滤器和插件-通过插件扩展WordPress的框架,将在第8章详细介绍。
  • 用户和作者——创建和管理站点的访问控制,以及第12章和第15章中安全和企业使用主题的关键。
  • 摘要、格式和评论——这些在本书中会根据需要进行讨论。

本章将在你探索WordPress Core文件时深入研究这些文件。你可以把这一章看作是“如何”探索WordPress Core的指南;它是WordPress Codex文档的一个现场指南,CodeX是用户贡献的讨论和解释。在浏览和搜索 Core的功能介绍时阅读舒适也是必要的。所以这里不包括所有WordPress功能的详尽列表,因为列表会随着WordPress Core的持续开发而变化和演变,也因为这里的目标是传达开发人员和部署人员的专业知识,而不是总结Codex。本书的目标是传达开发人员和部署人员的专业知识,而不是总结Codex。

WordPress附带两个插件:Akismet和Hello Dolly。这两个插件存在于wp‐content内的插件目录中。即使这两个插件是WordPress Core文件包的一部分,它们也不被认为是 Core功能,因为它们必须被激活才能正常工作,并且可以很容易地被删除。WordPress还附带三个 Core主题:Twenty Twelve, Twenty Thirteen, and Twenty Fourteen.。Twenty Fourteen 是新安装的WordPress的默认主题。与包含的插件一样,这些主题文件并不被认为是 Core功能,因为它们可以很容易地替换为任何你想在你的网站上使用的主题。

使用 Core作为参考

使用WordPress Core作为参考是一个快速而简单的学习WordPress中的各种功能的方法。理解如何在WordPress Core文件中查找可以帮助你在开发WordPress时找到问题的答案。要使用WordPress Core作为参考,需要理解 Core文件中会出现什么内容。大多数WordPress Core文件都包含代码注释形式的文档。通常,代码注释会显示在文件的头中,并给出正在查看的 Core文件的总体摘要。

打开WordPress根目录下的wp‐login.php文件,就可以直接看到这些一手材料。你会注意到文件的顶部有一个描述文件函数的头注释:

/**
* WordPress User Page
*
* Handles authentication, registering, resetting passwords, forgot password,
* and other user handling.
*
* @package WordPress
*/
           

所有 Core文件,除了图像,可以使用文本编辑器程序查看。根据默认的程序设置可能需要先打开文本编辑器,然后再打开文件,而不是直接打开文件。使用语法高亮显示的文本编辑器也很有帮助,它可以使PHP语法将高亮显示,以帮助更容易地阅读代码。在WordPress.org Codex网站http://codex.wordpress.org/Glossary#Text_editor上有一个完整的兼容文本编辑器列表。

内联文档

几乎所有的WordPress Core文件都包含PHPDoc格式的内联文档。PHPDoc是一种以PHP注释形式描述函数用法的标准化方法。这意味着在注释块中直接在函数之前详细解释每个函数。下面是WordPress函数的定义模板:

/**
* Short Description
*
* Long Description
*
* @package WordPress
* @since version
*
* @param type $varname Description
* @return type Description
*/
           

这对理解函数的工作原理非常有帮助。评论包括长评论短评论。WordPress的版本也被添加进去了。这有助于在新版本发布时区分添加到WordPress中的新函数。参数数据类型还列出了可用参数。数据类型是参数所需的数据类型。例如,ID参数可能使用int(整型)数据类型。最后一条信息是返回值。还列出了返回值数据类型。

WordPress中添加的所有新函数都是使用前面的模板记录的。关于WordPress内嵌文档的更多信息,请参阅 Core贡献者手册的文章:http://make.wordpress.org/core/handbook/inline‐documentation‐standards/php‐documentation‐standards/

查找功能

在WordPress Core中查找一个函数是了解特定的WordPress函数如何工作的最快方法。可以清楚地看到允许向函数发送哪些参数,以及函数实际做什么和返回值是什么。

首先,确保你已经在本地下载了最新版本的WordPress到你的电脑上。你将搜索这些文件作为WordPress的参考。打开任何可以搜索文件的文本编辑器(推荐Windows的TextPad和Mac的Sublime text)。在搜索一个函数时,我们希望从搜索中消除对该函数的调用。要做到这一点,可以在搜索的开头加上“function”一词,如function wp_head。并不是WordPress中的所有内容都是函数,但从函数开始深入是个不错的选择。如果你没有找到任何匹配,从你的搜索开始删除“函数”。还记得将你的文本编辑器设置为搜索所有文件(.),而不仅仅是.txt文件。

让我们看看is_super_admin()函数。检查用户是否为WordPress Multisite的超级管理员。在使用函数之前,您需要确切地知道函数期望的值。打开你的文本编辑器,在WordPress中搜索所有文件,函数is_super_admin。搜索应该在wp‐includes/capabilities.php中查找到结果

你马上就会注意到可以发送给这个函数的一个参数:$user_ id。注意函数上面直接列出的内联文档。在本例中,is_super_admin()文档是这样的:

/**
* Determine if user is a site admin.
*
* @since 3.0.0
*
* @param int $user_id (Optional) The ID of a user. Defaults to the current
user.
* @return bool True if the user is a site admin.
*/
           

这是一个非常有价值的内容块。注释中有关于该功能的简短描述,在本例中为“确定用户是否为站点管理员”。注释还说明了函数是何时添加的(从3.0.0版本开始)。还有关于单个参数的信息,包括参数类型、参数负责什么,以及在本例中参数是可选的。该注释还详细说明了预期的返回值是什么。在这种情况下,如果用户是站点管理员,函数将返回True,否则返回False。

仅凭这些信息就足以理解这个函数是如何工作的,但是为了更好地理解,让我们深入研究代码。前几行是这样的:

if ( ! $user_id || $user_id == get_current_user_id() )
$user = wp_get_current_user();
else
$user = get_userdata( $user_id );
           

根据函数上面的PHPDoc注释,知道$user_id参数是可选的,所以这段代码显示了如果$user_id参数没有传递给函数会发生什么。前面的if语句检查$user_id变量是否包含值。如果没有,或者当前登录的用户与$user_id匹配,则调用wp_get_current_user()函数来获取当前登录的用户的用户数据。如果$user_id变量包含一个值,则调用get_userdata()函数根据传递给函数的id检索用户数据。

if ( ! $user || ! $user->exists() )
return false;
           

现在你知道$user数据存在了,然后需要检查这个用户是否是一个超级管理员:

if ( is_multisite() ) {
	$super_admins = get_super_admins();
	if ( is_array( $super_admins ) && in_array( $user->user_login,
	$super_admins ) )
		return true;
} else {
	if ( $user->has_cap('delete_users') )
	return true;
}
           

让我们来分析一下这个if语句:

if ( is_multisite() ) {
           

这个if语句通过调用is_multisite()函数来检查在WordPress中是否真的启用了Multisite。超级管理员只有在WordPress的多站点功能被启用时才会存在。现在WordPress已经确定Multisite正在运行,函数调用get_super_admins()来检索WordPress中所有超级管理员的数组,代码如下:

$super_admins = get_super_admins();
           

$super_admins变量现在是所有超级管理员登录用户名的数组。下一行是这个函数中最重要的一行。这是检查用户是否是WordPress超级管理员的代码:

$super_admins = get_super_admins();
if ( is_array( $super_admins ) && in_array( $user->user_login, $super_admins ) )
return true;
           

如果前面的is_multisite()检查返回false,函数将执行以下else代码:

return false;
           

这段代码基本上是说,如果is_super_ admin()函数中的任何检查失败,则返回false。这更多的是一种安全措施,以确保总是返回一个真或假值。在查看这个示例之后,应该更清楚地看到WordPress Core代码是多么有用。通过研究源代码,你确切地了解了这个函数是如何工作的。你所有问题的答案都在 Core代码中,所以了解如何利用 Core对你有利是很重要的。

WordPress Core有一些包含许多更流行的WordPress功能的文件。这些函数用于所有的WordPress api,可以在任何自定义插件或主题中使用。下面的章节详细介绍了包含使用WordPress的关键代码的WordPress Core文件。下面列出的所有文件都位于WordPress的/wp‐includes目录中。

Functions.php

php文件包含主要的WordPress API函数。这些函数用于使用标准化方法轻松地与WordPress交互。插件、主题和WordPress Core都使用这些函数:

  • current_time() -根据指定的类型检索当前时间。
  • force_ssl_login() -需要SSL (https)登录WordPress。
  • wp_nonce_field() -为表单添加一个nonce隐藏字段。
  • 在WordPress中提交和处理数据时,一个nonce字段用于验证目的。这是确保代码安全的关键步骤。
  • absint() -将值转换为非负整数。
  • wp_die() -终止WordPress的执行并显示一个HTML错误消息

Option.php

option.php文件包含主要的WordPress Options API函数。这些函数用于以下用途:

  • add_option(), update_option(), get_option() -用于创建、更新和显示保存的选项的函数。
  • set_transient(), get_transient(), delete_transient() -用于在WordPress中创建、检索和删除暂态的函数。暂态是一个带有过期时间的选项。当到达过期时间时,暂态将在WordPress中自动删除。
  • add_site_option(), update_site_option(), get_site_option() -用于创建、更新和显示站点选项的函数。如果Multisite已启用,function返回network选项;如果未启用,则返回标准site选项。

Formatting.php

formatting.php文件包含WordPress API格式化函数。这些函数的有很多格式化输出的方式:

  • esc_attr() -用于转义HTML属性的字符串
  • esc_html() -用于转义HTML字符串
  • esc_url() -用于检查和清除一个URL
  • sanitize_text_field()——从用户输入或数据库中清除字符串
  • is_email() -验证电子邮件是否有效
  • capital_P_dangit() -著名的过滤器,强制WordPress中的P在显示内容时大写

Pluggable.php

Pluggable.php 允许你覆盖WordPress的某些 Core函数。如果这些函数在所有插件加载后仍未定义,WordPress就会加载它们。一些比较常用的函数包括:

  • wp_mail() -从WordPress发送电子邮件
  • get_userdata() -返回指定用户ID的所有用户数据
  • wp_get_current_user() -返回当前登录的用户数据
  • wp_set_password()——使用新的加密密码更新用户的密码
  • wp_rand() -生成一个随机数
  • wp_logout() -注销用户,销毁用户会话
  • wp_redirect() -重定向到另一个页面
  • get_avatar() -返回用户的avatar

Plugin.php

plugin.php文件包含WordPress Plugin API函数,包括:

  • add_filter() -在显示到屏幕或保存到数据库之前,WordPress Core启动的钩子函数(回调)来过滤内容
  • add_action() -在特定的执行点启动WordPress Core的钩子函数
  • register_activation_hook()——插件被激活时调用的钩子函数
  • register_deactivation_hook() -插件被停用时调用的钩子函数
  • plugin_dir_url() -返回插件的文件系统目录路径
  • plugin_dir_path() -返回插件的URL
  • doing_filter()和doing_action() -返回当前正在处理的筛选器或操作的名称

User.php

User.php文件包含WordPress User API函数,包括:

  • get_users() -返回一个匹配所查询条件的用户列表
  • add_user_meta(), get_user_meta(), delete_user_meta() -用于创建、检索和删除用户元数据
  • username_exists() -检查用户名是否存在
  • email_exists() -检查电子邮件地址是否存在
  • wp_insert_user()和wp_update_user() -创建和更新用户帐户

Post.php

post.php文件中包含了WordPress文章处理中用到的函数,包括:

  • wp_insert_post()-创建一个新的帖子
  • get_post() -检索包含所有帖子数据的单个帖子
  • get_posts() -检索最新帖子的匹配条件列表
  • add_post_meta() -在一个帖子上创建元数据(自定义字段数据)
  • get_post_meta() -检索帖子上的元数据(自定义字段数据)
  • get_post_custom() -返回一个包含所有元数据(自定义字段)项的多维数组
  • set_post_thumbnail() -设置一篇帖子的预览图像
  • register_post_type() -在WordPress中注册一个自定义的帖子类型

Taxonomy.php

taxonomy.php文件包含WordPress分类法API所使用的函数。分类法用于管理元数据(如类别和标记)的层次关系(见第6章),还可以进行扩展,如第7章所述。这个文件中的函数包括:

  • register_taxonomy() -在WordPress中注册一个自定义分类
  • get_taxonomies() -返回一个注册的分类法列表
  • wp_insert_term(), wp_update_term() -根据提供的参数插入或更新分类法术语

在为WordPress开发自定义主题和插件时,还有更多的 Core功能可以使用。我们花几分钟探索/wp‐includes的 Core文件。这个目录包含大部分的WordPress API Core函数文件。要了解这里列出的任何函数的更多信息,请打开相应的文件并查看源代码。请记住,每个函数都有解释如何正确利用函数的内联文档。我们将在第8章详细介绍插件API函数。主题使用的 Core功能将在第9章中介绍。

弃用功能

在开发新版本的WordPress时,某些函数可能会被弃用。已弃用函数意味着该函数没有从WordPress中移除,但不应该在你的插件和主题中使用。在这种情况下,通常会创建一个新函数来替换已弃用的函数。一个函数在WordPress中可能会因为许多不同的原因而被弃用,但最常见的原因是该函数需要完全重写以更好地处理它添加到WordPress的功能。

WordPress包含一个文件来存储所有多年来已经弃用的函数。WordPress以其优越的向后兼容性而闻名。这意味着当WordPress的新版本发布时,它将重点放在向后兼容性上,以验证新功能和功能不会破坏现有的运行WordPress的站点,即使使用的功能被认为是已弃用的。让我们看一下已弃用get current theme()函数的内联文档:

/**
* Retrieve current theme name.
*
* @since 1.5.0
* @deprecated 3.4.0
* @deprecated Use (string) wp_get_theme()
* @see wp_get_theme()
*
* @return string
*/
           

你将注意到一些对已弃用函数的额外注释行。第一行是@deprecated行,说明该函数在WordPress的哪个版本中被弃用,在本例中是v3.4。第二个是@see,它告诉您应该使用哪个函数,在本例中是wp_ get_theme()。当新版本的WordPress发布时,deprecated.php文件是一个非常重要的文件。如果一个常用函数已被弃用,应该立即停止使用它,甚至考虑更新你的旧代码以使用替换。一般来说,不推荐的函数通常不会从WordPress Core中移除,但是我们不能保证在未来的版本中不会删除已弃用的函数。

Wordpress Codex和代码参考

WordPress有许多不同的在线资源,在学习和使用WordPress时非常有用。这些资源应该添加书签以供快速参考,初学者和专家都可以使用这些资源。在本节中,我们涵盖了两个最流行的在线WordPress资源:WordPress Codex和Code Reference。

什么是Codex

WordPress Codex是一个位于WordPress.org上的WordPress文档的在线wiki,WordPress.org将Codex描述为“WordPress知识的百科全书”。你可以通过http://codex.wordpress.org或WordPress.org页眉菜单的“支持文档”链接访问WordPress Codex。

Codex是一个基于wiki的网站,这意味着任何人都可以创建,编辑,并对Codex内的文章作出贡献。Codex包含了WordPress所有方面的有用知识。从“WordPress入门”到更高级的开发者主题,Codex是任何想要更多了解WordPress的人的必要资源。

Codex有多种语言版本。要找到翻译成你的语言的Codex,请访问多语种Codex页面http://codex.wordpress.org/Multilingual_Codex。你也可以对Codex作出贡献,并帮助扩展任何语言或创建自己的版本的任何语言的法典,如果它没有被列出来的话。

使用Codex

Codex可以有许多不同的用途。最常见的方法是透过搜索框查找Codex,或浏览http://wordpress.org/search/,方便地在Codex内查找符合你查找条件的文章。

WordPress.org搜索是由谷歌自定义搜索支持的,如图4-1所示。返回的搜索结果来自所有的WordPress.org,而不仅仅是Codex,所以记住这一点很重要。还有一个不太为人所知的只搜索Codex的网址是http://codex.wordpress.org/Special:Search

精通WORDPRESS设计与开发:第4章 探索WORDPRESS CORE

你也可以浏览Codex主页上的文章索引。这些文章是按主题和难度等级排列的。还有一个关于最新版本的WordPress的话题。这里的文章涵盖了新特性、插件和主题的兼容性测试、安装、升级和新版本的支持。

Codex 提供了广泛的术语表。这可以帮助你熟悉整个Codex中使用的常用词。你可以在http://codex.wordpress.org/Glossary上查看官方词典。

另一种搜索方法是使用快速索引。这个索引允许你根据文章标题的第一个字母查找文章。你可以在http://codex.wordpress.org/Codex:Quick_index上找到快速索引

还有一个WordPress课程页面在http://codex.wordpress.org/WordPress_Lessons。这个页面提供了如何学习WordPress的特定元素的课程。课程是按主题组织的,如果你不确定先读什么,那么从这里学是一个很好的开始。

函数参考文档

WordPress函数在Codex中描述,每个可用的WordPress API函数都有一个单独的函数参考页面。这些页面详细解释了WordPress函数是如何工作的,如图4-2所示。建议将此页面添加为书签,以便快速了解WordPress功能及其功能。官方文档的地址为:http://codex.wordpress.org/Function_Reference

精通WORDPRESS设计与开发:第4章 探索WORDPRESS CORE

可以将函数参考文档可以看作函数内联文档的在线扩展版本。参考资料中有描述部分它解释了函数如何工作和如何使用。列出了各个参数、数据类型和每个参数的描述。函数参考中最有用的部分是页面中的示例部分。通过这些示例,可以很容易地了解如何使用该函数。get_userdata()的例子如下:

<?php $user_info = get_userdata(1);
echo 'Username: ' . $user_info->user_login . "\n";
echo 'User roles: ' . implode(', ', $user_info->roles) . "\n";
echo 'User ID: ' . $user_info->ID . "\n";
?>
           

这个例子展示了如何为用户ID 1加载特定的用户数据。示例如下:

Username: michael_myers
User Level: administrator
User ID: 1
           

这是一个简单的示例,但是连同其他参考信息,可以帮助你轻松地学习新函数以及如何在代码中正确地使用它。函数参考的源文件部分详细介绍了函数位于WordPress Core中的位置。在我们的例子中,get_userdata()函数位于wp‐includes/pluggable.php中。本地文件是一个指向Trac中WordPress Core文件的链接。这是通过浏览器查看函数声明位置的一种快捷方便的方法。另外我们将在第16章介绍Trac软件。

最后一个函数参考主题列出了相关函数。这可以帮助你确定一个类似的功能,可以完成你正在做的任务。例如,wp_insert_post()函数列出了wp_update_ post()和wp_ delete_ post()作为相关函数。大多数的WordPress API函数都有很好的文档,但并不是所有的函数都有一个函数参考页面。在功能参考主页上以红色显示的任何功能目前都没有文档。Codex是一个正在进行的社区项目,所以期望所有功能最终在Codex中被完全记录。

注意:对Codex的贡献是参与WordPress的一个很好的方式。你不需要成为一个高级开发人员来贡献代码示例、描述、以及关于WordPress中各种特性和附加功能信息。

WordPress APIs

WordPress提供了许多不同的API来帮助与WordPress进行交互。你可以把api想象成网关,让你在WordPress内添加功能或检索外部内容,而不违反“不要破坏 Core”的原则:大多数API插入对非 Core代码的引用,这些代码将通过注册WordPress的入口点添加到wp-content目录中。每个API连同API中使用的函数一起被记录在Codex中。API是一组可用于主题和插件的预定义函数。以下是最常见的WordPress api列表:

插件API -用于自定义插件开发。Codex有一个丰富的插件API文档页面。有一个回调函数,动作和过滤器的介绍,这些是自定义插件与WordPress交互的主要方式。插件API页面链接到函数参考页面,可用的API函数位于/wp-includes/plugins.php http://codex.wordpress.org/Plugin_API链接中

widget API -用于在插件中创建和维护widget。“外观”界面下,“小部件”会自动显示,可用于主题侧栏的任意操作。

widget API位于http://codex.wordpress.org/Widgets_API。

Shortcode API-用于在插件中添加短代码。短代码是添加到文章中的宏代码。这允许插件抓取短代码,执行特定的命令,并在你的文章中显示元素。短代码还可以接受参数来更改输出。

一个例子是WordPress core 短代码gallery(使用时用中括号包起来)。添加gallery到你的帖子自动以画廊形式显示上传到该帖子的所有图像。当编辑一个帖子时,你会看到gallery短代码,但在你的网站的公共侧查看它显示的实际图片画廊。短代码API可以在http://codex.wordpress.org/Shortcode_API上找到

HTTP API -用于从WordPress发送HTTP请求。此API是获取外部URL内容的标准化方法。基本上,它接受提供的URL并测试一系列用于发送请求的PHP方法。根据主机环境的不同,WordPress使用它认为正确配置的第一个方法来发出HTTP请求。

目前测试的HTTP API PHP方法有cURL、Streams和FSockopen。方法也完全按照这个顺序进行检查。

你可以使用 Core控制插件(http://wordpress.org/extend/plugins/Core‐Control /)来具体选择所有HTTP请求使用的方法。

使用HTTP API,您可以轻松地与谷歌Maps API交互来动态生成地图和绘图。HTTP API也可以很容易地与Twitter API交互,允许你直接从WordPress发布/阅读推特文章。HTTP API可以在http://codex.wordpress.org/HTTP_API上找到。

setting API -用于创建设置页面。这个API用于创建和管理插件和主题的自定义选项。使用Settings API的主要优点是安全性。API会清除用户保存的所有设置数据。这意味着在保存设置数据时不再担心nonces、数据验证和跨站脚本攻击。这比旧的数据验证方法简单得多,旧的数据验证方法每次需要在插件中保存设置时都必须调用。设置API可以在http://codex.wordpress.org/Settings_API上找到。

Options API -用于在WordPress数据库中存储选项数据。Options API提供了一种创建、更新、检索和删除选项值的简单方法。选项API可以在以下URL中找到:http://codex.wordpress.org/Options_API

Dashboard Widgets API -用于创建管理仪表板小部件。从API中添加的小部件自动包含仪表板小部件拥有的所有jQuery特性,包括拖放、最小化和通过屏幕选项隐藏。仪表板小部件API可以在http://codex.wordpress.org/Dashboard_Widgets_API上找到

Rewrite API -用于创建自定义重写规则。这个API允许你创建自定义重写规则,就像你在.htaccess文件中那样。你也可以创建自定义的永久链接结构标签(即%postname%),添加静态端点(即/my‐page/),甚至添加额外的提要链接。Rewrite API函数位于/wp-includes/Rewrite .php http://codex.wordpress.org/Rewrite_API。

记住,所有的WordPress api都可以在定制插件和主题开发中使用。这是为WordPress添加额外特性和功能的主要方法。利用上述api创建了一种简单且标准化的与WordPress交互的方式。有关所有WordPress api的更多信息,请访问Codex页面http://codex.wordpress.org/WordPress_API's

Codex 争议

就像任何一个维基百科一样,关于Codex中文章的准确性总是存在争议。困扰Codex的一个问题是文章的新鲜度。WordPress正在以相当不错的速度发展,因此Codex需要保持这种速度,以便准确。不幸的是,这并不总是发生,而且有些材料已经过时了。WordPress Codex是一个社区项目,所以你可以轻松创建一个帐户并开始帮助!对WordPress的贡献将在第16章中介绍。Codex存在的另一个问题是内容的组织。目前,在Codex中有如此多的信息,它可能很难在混乱中找到你正在寻找的答案。同样,介绍WordPress Core的动机之一是为你提供一个地图,以帮助缩小你的搜索范围,并介绍相关的功能主题。

代码引用

WordPress代码参考是一个更新的WordPress在线资源。Code Reference于2014年春季推出,是一个自动生成的在线资源,帮助开发者找到更多关于WordPress函数、类、回调等的信息。你可以通过http://developer.wordpress.org/reference/访问代码参考

代码引用内容是使用一个名为WP Parser的开源项目生成的。这个程序解析所有的WordPress Core文件,并从WordPress Core内联文档中生成引用条目。欲了解更多关于WP Parser项目的信息,请访问https://github.com/rmccue/WP‐Parser。

使用代码引用

有几种不同的方法可以使用代码引用。和所有WordPress在线文档一样,它有一个强大的搜索选项。如果你不知道某个函数的名称,那么搜索代码参考可以帮助找到正在查找的特定函数。或者可以浏览各种主题,包括函数、回调、类和方法。按主题筛选将按字母顺序列出所有主题,这是学习你可能不太熟悉的主题的好方法。

代码参考的另一个非常有价值的特性是能够查看WordPress版本的所有函数。例如,你可以通过访问http://developer.wordpress.org/reference/since/4.0.0/来查看WordPress 4.0.0中引入的所有函数。要查看旧版本的WordPress,只需将URL中的版本更改为你想看到的版本。如果你想了解WordPress 2.5中引入了哪些函数,请访问http://developer.wordpress.org/reference/since/2.5.0/

代码引用细节

代码引用中的每个条目都有一个详细页面,其中列出了关于该条目的所有信息。让我们以absint() WordPress函数为例,如图4-3所示。

精通WORDPRESS设计与开发:第4章 探索WORDPRESS CORE

代码引用的第一部分包括带有可用参数的函数、关于函数的描述、期望的返回值、函数被添加到的WordPress的版本以及声明函数的源文件。如果你认为这些信息看起来很熟悉,那么你绝对是对的。代码参考页面上显示的函数细节直接来自WordPress Core中的absint()函数的内联文档。下面详细介绍函数参数。本节将列出该函数将接受的任何和所有参数。每个参数都详细说明了函数期望的数据类型。

最后一节是函数声明的实际源代码。这段代码正是我们正在查看的函数在WordPress Core中存在的代码。正如你所看到的,WordPress代码参考是一个在线的,更漂亮的WordPress Core代码版本。

Codex 与代码引用参考

代码引用参考比Codex最大的好处是准确性。代码引用是由WordPress Core文件自动生成的。这确保了代码参考中的所有内容是完全准确的,并且总是与最新版本的WordPress同步更新。另一方面,WordPress Codex是一个由来自世界各地的贡献者手动更新的wiki。

Codex 对于代码参考的最大好处是提供了更多的内容和例子。因为Codex是一个wiki,可以为WordPress中的任何特定功能提供无限的信息、例子和教程。这可以让你更容易理解如何在WordPress中使用特定的函数。

Codex和代码参考有优点和缺点,但最终它们是学习使用WordPress开发的两个非常好的资源,我们应该添加书签以供将来参考。

不要破坏Core代码

虽然开发WordPress Core并将其作为参考是非常受鼓励的,但破坏 Core则不然。入侵 Core文件意味着对WordPress的 Core文件进行任何修改。一个更改可以像一行代码那么简单,但是破坏就是破坏,这样做可能会在以后导致重大问题。

为什么不?

修改WordPress Core会让你很难升级到最新版本的WordPress。保持WordPress的更新是整个网站安全的重要一步。如果发现任何安全漏洞,补丁通常会很快发布。如果因为你修改了 Core文件导致不能更新,那你的网站将存在这些安全漏洞,你的网站将增加被黑客攻击的可能性。

因为WordPress的很多部分都依赖于其他部分来正常工作,所以黑客攻击WordPress core也会导致网站不稳定。如果对这些部分进行更改,可能会破坏一些与你所更改的内容完全无关的内容。

安全性是不应该修改core的另一个原因。WordPress core(内核)被世界各地的安全专家审查过。通过修改内核,你需要依靠自己的专业知识来确保你的修改是安全的。如果你不理解黑客利用你的代码有许多不同方式,你可能会在WordPress的内核内创建一个安全漏洞。

你永远不应该破坏WordPress内核的最后一个原因是同情:也就是说,同情那些跟着你维护网站的开发人员。大多数网站会在几年内更换开发人员,所以不能保证你五年后还会在一个网站上工作。想象一下,跟踪您的开发人员试图确定哪些 Core文件被修改了,这对任何开发者来说都是一场噩梦,它将网站所有者置于一个不利的位置,因为大多数开发者将拒绝开发一个被修改的WordPress版本。如果你修改了内核,你所构建的依赖将被误解或隐藏,当WordPress内核升级到这个网站时,被修改的内核将以无声、邪恶或大声的方式崩溃。

修改内核的替代方案

WordPress中不存在的任何特性或功能都可以通过插件来添加。有时候,修改内核可能是简单的答案,但从长远来看,它会让你的生活更加艰难。(我们还没有遇到过不能与插件结合的功能。)WordPress是非常灵活的,这是它的主要优势之一,因此它的内核不应该被修改。不要修改内核!

如果你对WordPress的内核和它的复杂性很感兴趣,你应该加入WordPress开发者社区,参与修复bug并为WordPress的内核构建做出贡献。这将在第16章中详细介绍。

本章总结

在本章中,介绍了WordPress 软件内核。探索了内核的内容,如何在为WordPress开发时使用内核作为参考,以及如何确定每个版本中哪些函数是不支持的。还学习了WordPress Codex、代码参考和WordPress中最常用的API。现在你已经理解了WordPress的内核,是时候学习如何利用WordPress循环来定制内容的显示了。

继续阅读