说明:搭建网站时随手选了WordPress,后来发现国内过于WordPress的文章很少,系统化的更少,于是决定自己翻译一本。原书名《Professional WordPress Design and Development (3rd ed.) [Williams, Damstra & Stern 2015-01-12》,另外本人英语一直稳定的烂,翻译不当之处,请多体谅。
https://www.chenxiaofang.site/archives/category/wordpress
本章简介:
如果在一个你的设备上输出“Hello World”代表了掌握了一种编程语言的最低能力,那么在线发布你的第一篇文章在内容发布世界中是等价的。常见的错误和问题以及解决它们的决心不但组成了这一章,同时也刺激你的才华和智慧到迸发的边缘。
WordPress是目前最流行的开源内容管理系统(CMS)之一,拥有全球活跃的用户、开发人员和支持社区。虽然作为用户生成内容的工具,WordPress可以与Drupal和Joomla相比较,但WordPress以其广泛的托管选项、功能扩展(插件)和美学设计和元素(主题)而显得与众不同。随着自助出版、低成本网络托管和免费提供的核心组件如MySQL数据库的兴起,博客软件与大多数其他数字技术一样,从高端、高成本的产品转向了广泛使用的、低成本的消费者或“业余爱好者”系统。
WordPress不仅仅是一个可以给你的一篇篇数字日记附加URL的博客系统,它已经发展成为一个全面的内容管理系统和蓬勃发展个人、企业使用的应用程序开发框架。本节将简要介绍WordPress的早期历史,并让你了解当前的版本和用户社区。
WordPress的起步类似于许多其他流行的开源软件包:一些有才华的开发人员看到了创建一个基于GPL许可下的强大而简单的工具的必要性。Michel Valdrighi的b2/cafelog系统为项目提供了起点,WordPress是由开发者Matt Mullenweg和Mike Little开发的。WordPress首次出现于2003年,它也是建立在MySQL开源数据库上的并且用于一起使用PHP作为开发平台来持久化内容。Valdrighi仍然是这个项目的贡献者,这个项目正在蓬勃发展,因为它拥有一个不断增长的、感兴趣的用户和开发人员社区。
与其他用PHP编写的系统一样,它自身包含了,安装、配置、操作和管理任务模块。WordPress的广泛流行,与它简单的,著名的“5分钟安装”有关,几乎所有的WordPress出版物均提到了这一点中。除了发布文章,WordPress被设计为可扩展的以适应不同人群的不同需求。
今天的WordPress由少数核心开发者和许多主要贡献者支持。Mike Little经营着WordPress专卖店zed1.com,他偶尔会贡献代码。Matt Mullenweg的公司,Automattic,持续运营wordpress.com主机服务、资金开发的相关内容和网站管理工具,包括Akismet,多站点WordPress, Gravatar和最近的插件,如JetPack。Akismet是一个强大的,自动托管的垃圾邮件检测和保护服务,具有统计(和难以置信的)低故障检测率。以前被称为WordPress MU,多站点WordPress功能是wordpress.com主机系统的核心,现在已经合并到WordPress的源码主干分支。Gravatar动态提供与电子邮件地址绑定的图像服务,提供具有多种显示选项的托管图标。把它看作是一种服务,使Hot‐link你的头像在技术上和社会文化上都是可以接受的(译注:这里说的是国外)。JetPack是一个多功能插件为站长提供大量的共同需求。JetPack插件将在第16章中进一步讨论。
作为一个内容管理系统,WordPress系统同时被设计为支持带有评论的时间线的文章。BuddyPress是一组主题和插件,将WordPress扩展为一个功能性的社交网络平台,允许注册用户发送消息并相互交流,同样所有的内容都在WordPress框架内管理。类似地,bbPress是一个基于PHP和MySQL的系统,专为论坛(公告板)设计,它于WordPress不同,但通常与WordPress集成。
第16章详细地介绍了WordPress的一些附属系统,在这里介绍它们是为了让你了解WordPress是如何超越一个基本的面向单一用户的工具的。同时,我们并不是在为Automattic背书或制作广告,而是在没有向Mullenweg和Little致谢的情况下深入挖掘WordPress的核心,这其实并不是一种太好的社区行为。
这本书是基于WordPress 4.1的主发行版本,但真正关注的是基础WordPress的设计。每一个连续发布的WordPress都包括管理和控制功能(仪表盘);备份、导出和导入功能;以及安装和升级功能。即使你以一个稍微低版本开始WordPress,你也将能够把它安装升级到当前版本并保持最新。安装和升级方法将在本章后面讨论。现在我们要讨论的是WordPress到底有多受欢迎呢?
当前状态人们对WordPress的兴趣和使用越来越多。你手里拿着的这本书就是证明。就在四年前,只有很少的WordPress书籍可用。现在这第三版已经出版了。“受欢迎程度”总是一个主观的衡量标准,但统计数据给这些看法增加了一些分量。根据Automattic的数据,截至2014年,每天都有成千上万的新WordPress网站被创建(http://en.wordpress.com/stats/),这还不包括独立的自我托管的WordPress网站。这包括使用WordPress进行内容管理、写博客和个人发牢骚,并且忽略那些安装有多个WordPress人,但即使是这样的估计,WordPress仍然非常受欢迎。Automattic不再透露他们在WordPress.com上托管了多少网站,但在2012年,他们报告称全球有近7400万个WordPress网站,其中约有一半托管在WordPress.com, 在2010年,这个数字仅为500万个网站。在2008年,官方的WordPress插件库拥有超过6300个插件,是2007年的两倍。2012年,这本书的第二版引用了存储库中的19000个插件,在撰写本文时,插件的数量已经接近32,000个(http://wordpress.org/plugins/)。自从这本书最后一次出版以来,这个社区已经贡献了超过1000个独特的主题到官方的WordPress主题库,现在已经有超过2500个主题。这并不包括所有创建自己定制的商业主题供应商和独立开发者主题。
插件和主题的组合已经需要科学的符号来表示复杂性,但时它们都同样易于定位、集成和使用。这促成了一个可靠的体系结构和使用该系统的同样可靠的社区。简而言之,一句话就是:围绕WordPress的生态系统还在蓬勃发展,甚至是爆炸式发展。
今天,WordPress支持许多大型媒体公司的网站或其部分,包括CNN的博客,华尔街日报的All Things D,路透社和福布斯。通用汽车、UPS和索尼等财富500强公司都使用WordPress。WordPress对于很多用户来说都是一个可行的选择,从国际企业集团到大型唱片艺术家再到大型媒体出版公司。有些人在选择WordPress之前需要确保并关注哪些大公司在使用它;你可以在WordPress著名用户展示页面(https://en.wordpress.com/notable‐Users/)找到一个列表。
简单易用,以及插件和主题的强大功能也使WordPress成为可能适合妈妈们的家庭信息网站,本地小学老师的课堂时事通讯,以及爱好者个人网站。这些确实是今天WordPress的一些成功案例,这些广泛访问的流行网站是使WordPress流行的原因。WordPress适应性广泛可以根据你的需要来选择简单或复杂。让“低技术”用户成为网络发布者,然后向他们的家人和朋友宣传WordPress是多么容易使用,这推动了WordPress的爆炸性的增长和使用。
你要从哪里开始呢?WordPress.org网站是当前开发版本和正式版本发布的主页。访问wordpress.org开始寻找插件,主题,想法和希望功能清单吧。
Wordpress.com既有免费的,也有付费的主机服务。在www.wordpress.org/hosting你会找到一个支持WordPress的主机提供商列表,他们提供的安装包中通常还包括一些额外的服务,比如首次安装和配置支持。你也会发现WordPress托管提供商,提供严格地托管WordPress站点服务之外,还提供额外的专业化功能和选项。
除了纯粹的使用之外,WordPress还在社区贡献的基础上蓬勃发展。就像高中体育课,参与是游戏的“名字”,但还有几条半正规的大道,沿这这些路走你的努力和精力都是值得的。
WordCamp活动由社区主办并在当地运营,目前在世界各地的数十个城市开展。wordcamp.org上列出了官方的WordCamps,但是你也可以在靠近你的大城市里搜索WordCamps活动。WordCamps活动几乎出现在每一个地方周末与博主,摄影师,作家,编辑,开发人员和设计师的经验与会者的技能水平也很重要。WordCamp是一种低成本的本地活动这通常是结识WordPress名人的好机会。访问www.wordcamp.org寻找下一个WordCamps。
与wordcamp相比,WordPress meetup的组织结构更少,但召集频率更高,它包括近400个城市的本地用户和开发者(本书第二版提到的是200个,第一版提到的是40个)。但需要一个meetup.com账户,但一旦注册了,你就可以在www.wordpress.meetup.com上查看地点和时间表,看看人们在何时何地谈论内容管理。
www.codex.wordpress.org 上托管了一个内容丰富的多语言文档库。 WordPress Codex,在充分尊重为古代手写手稿形式的前提下,代表社区贡献的 WordPress的各个方面提示和技巧,从安装到调试。 如果您有为 WordPress 文档做出贡献的冲动,请注册然后在 WordPress Codex 中写下您的心声。
最后,所有WordPress贡献者和社区都有邮件列表(及其档案)。目前可以在www.codex.wordpress.org/Mailing_Lists网上查看名单;最令人感兴趣的可能是为Codex贡献者提供的wp-doc列表和为WordPress core工作并引导其未来方向的wp-hacker列表。
WordPress是在Gnu公共许可证(GPL)版本2下授权的,协议包含在License .txt文件中。你可以在顶级代码目录中找到该文件。大多数人都不读许可证,而简单地理解WordPress是一个开源项目;然而,一些公司的法律部门仍然担心GPL许可的病毒式传播,以及它对原始发行代码、与之一起使用或在其之上的额外代码或内容的增加的影响。这种混淆很大程度上源于“自由”和“版权”这两个词在上下文中被不恰当地使用。
这本书的作者并不是律师,他们也不会在网络或电视上扮演律师如果你真的想了解版权法的细微差别,以及什么构成了代码的“转让权”,可以参考劳伦斯·莱西格(Lawrence Lessig)或科里·多克托罗(Cory Doctorow)在这些领域的著作。包含这个部分是为了尽量减少使用者IT部门的担忧,他们可能会被过于热心的法律团队劝阻使用WordPress作为企业内容管理系统。不要让这种事发生在你身上;再者,如果CNN和《华尔街日报》这两家依靠内容版权生存的公司能够接受WordPress的话,那么它可能也符合大多数企业用户的法律限制。
GPL的核心原则是确保您总是可以获得任何GPL许可软件的源代码。如果一个公司修改了一个GPL许可的软件包,然后重新发布那个更新的版本,它必须同时提供源代码。这就是GPL发挥作用的“病毒式”特性;它的目标是确保对软件及其衍生产品的访问不会减少。如果你计划修改WordPress核心,然后发布代码,你需要确保你的修改被GPL覆盖,并且代码是可用的源代码的形式。考虑到WordPress是用PHP(一种解释型语言)编写的,分发软件和发布源代码实际上是相同的行为。
以下是一些常见的误解和相关商业场景的解释:
“自由软件”意味着你不能直接将其商业化使用。你可以向使用你的WordPress的用户收费(服务费),或者通过在你的网站上运行的广告赚钱,或者使用WordPress内容管理平台作为在线商店的基础。这就是wordpress.com的工作原理;它还允许谷歌向使用其基于Linux的服务的广告商收费。你可以找到专业质量的WordPress主题,价格不菲,或者你可以支付主机提供商每年数百甚至数千美元来运行你的MySQL、PHP、Apache和WordPress软件包;这两者都涉及WordPress的商业化。
如果你修改代码来处理你自己的{内容,安全策略,或模糊的导航需求},你必须发布这些更改。你只需要为你所发布的软件提供源代码即可。如果你选择在公司内部进行这些更改,则不必重新分发它们。另一方面,如果你对WordPress内核做了改进,整个社区都会从中受益。
让越来越多的雇主了解社区贡献的价值和宽松版权和员工贡献规则有时是有点难度的。但事实上其他雇主的选择代表WordPress社区的壮大,这证明了你使用WordPress有一个坚实的起点。
GPL将“感染”你放入WordPress的内容。内容——包括由WordPress管理的主题、帖子和页面中的图形元素——是与WordPress内核分离的。它由软件管理的,而不是软件的衍生品或部分。但是,主题是WordPress代码的衍生物,因此也属于GPL,要求您提供主题的源代码。请注意,如果您希望将该主题用于商业用途,您仍然可以对其收费。同样,这里的关键点是让任何使用该软件的人都可以使用源代码。如果您打算对主题的使用收费,您还需要在GPL下提供源代码,但正如前面指出的,安装主题的用户可以有效地获得源代码。
比WordPress的历史课和许可检查更重要的问题是,你可以用WordPress做什么,为什么你想享受它的健壮性。下一节将把WordPress作为一个全面的内容管理系统,而不仅仅是一个博客编辑工具。
在书店里的书架上摆满了各式各样的书籍,这些书籍可以提高你的写作音量、文学风格、博客技巧以及其他方面的内容创作能力。而这本书的目标之一是定义可视化、风格化和上下文管理机制,你可以使用WordPress围绕你的内容塑造一个充满活力的用户社区。在这样的语境里能激发你与读者的对话。发表文章不仅仅是每篇文章里的文字即使你是一个有趣的作家。发表文章更多的包含人们怎样才能找到你?你如何在人群中脱颖而出?你如何在你的网站上留下自己的印记,并出于个人、企业、社区或商业目的对其进行个性化?
博客系统的核心在于简单的内容管理操作:创建一篇文章,将其持久化到文件系统或数据库等稳定的存储中,并根据一组时间或关键字标准显示格式化的输出。随着博客页面内容的丰富性和类型的扩大,对内容的分类、搜索、选择和呈现到包括元数据和内容分类的需求也不断增加,以单一用户为目标的博客软件和企业级内容管理系统之间的界限变得逐渐模糊。
内容管理系统(CMS)处理各种类型内容的创建、存储、检索、描述或注释以及发布或显示。CMS还包括工作流任务,通常是从编辑或发布的角度,并包括诸如批准和标记内容以进行额外的编辑或审查等操作。WordPress仪表板提供了工作流管理和编辑控制这些元素的功能。WordPress并不是今天唯一广泛使用的开源内容管理系统;Drupal和Joomla项目同样受欢迎。Drupal和Joomla从管理内容存储库的角度出发;它们处理各种内容类型、多个角色中、多个作者,并将内容交付给请求它的使用者。WordPress的核心是一个发布系统,最终的焦点是向读者展示内容。虽然存在一些功能重叠的区域,但你可以将WordPress与其他内容管理系统集成在一起,这一过程将在第15章详细介绍。
WordPress通过其可扩展性的设计和内容持久性与内容显示的分离,将自己确立为一个真正的内容管理系统。通过模型-视图-控制器(MVC)的设计模式,WordPress将MySQL持久化层分离为一个数据模型,主题驱动的用户界面和显示功能,以及插入功能到数据到表示流的插件架构。最重要的是,WordPress以原始的形式存储内容,用户输入或应用程序通过WordPress API发布。
在页面呈现之前,内容不会被格式化、通过模板运行或布局,这给生成实际HTML的函数带来了巨大的功能。同时,WordPress使用的数据模型使用一组丰富的表来管理类别(分类法)、内容标记(大众分类法)、作者信息、评论和其他部分交叉参考价值。这种WordPress数据库模式将在第6章中讨论。
虽然这样的设计让WordPress作为一个内容管理系统具有不可思议的能力和灵活性,但它也需要了解这些数据持久性和控制流是如何关联的。(正是为了对WordPress的功能进行剖析,我们才凑到一起写了这本书。)
从读者的角度来看这个问题:在一个数以千万计的网站中(其中许多只有“第一篇文章”),你如何被发现、听到和回应?你的Twitter粉丝应该想要阅读你的网站,你的WordPress站点可以更新你的Twitter feed。相反,你的Twitter更新可能会出现在你的WordPress侧边栏中,把超短的内容时间线和更有思想的时间线结合起来。如果你在Facebook上很活跃,你可以将条目导入公众人物页面,Facebook的读者将把流量带回你的网站。如果你的文章涵盖了特定的、详细的或晦涩的领域,谷歌搜索这些术语会把读者引向你,他们会在那里加入对话。第12章着眼于如何让你的WordPress内容更广泛地分布。
在开始任何关于展示、风格或内容的严肃工作之前,你需要为你的网站建立一个主页(尽管之前讨论过WordPress和内容管理系统,我们还是会参考你的网站和实际的WordPress安装,它们可以互换使用,主要是为了方便和简洁)。
影响你选择的因素包括:
本节将快速介绍一些主机选项,带你了解一些自己动手安装的基础知识,并概述WordPress和MySQL在安装陷入混乱时选择忽略的方式。
WordPress托管有三大类,每一类都需要在管理复杂性和控制深度之间进行权衡。最简单和最流行的是使用wordpress.com,一个由Automattic使用多站点版本的WordPress(最初是WordPress MU)运行的免费托管服务。您可以通过Dashboard安装主题和插件,但您只能启用或禁用预先安装的选项。此外,您将无法访问底层的MySQL数据库和核心代码,也无法将WordPress与其他系统集成。你可以重定向你自己的url到wordpress.com,但是如果你想完全控制代码和所使用的url,你可能会看到一个付费选项。免费的方法对您来说可能是合理的第一步,但是本书假设您要对您的安装进行精确控制。
你可以在www.wordpress.org上找到付费主机提供商的初始列表,包括wordpress.com上的付费选项。大多数都有最新的或接近最新的WordPress核心版本,可以作为一个软件包与MySQL和web服务器一起安装。第三个托管选项是在您拥有和操作的服务器上安装所有的东西。如果您的服务器位于托管设施中,但您享有root管理权限,这就相当于自己安装。
这些都是将你的WordPress安装放到公共互联网上的选项。如果你只是想了解一下,第3章介绍了如何在本地运行WordPress进行开发。
WordPress需要一个支持PHP的web服务器,一个URL重写工具和一个MySQL实例。Apache是前端WordPress最受欢迎的选择(本书2015写作),因为它通过mod_php和mod_rewrite中的URL重写来提供PHP解释。人们对lighttpd(Lighty)和nginx作为Apache替代品的兴趣越来越大。最后,你可以使用微软的IIS 7.0作为一个web服务器和它的URL_rewrite模块。对URL重写的强调源于WordPress对内容条目的“漂亮的”永久链接的支持,允许你用日期、类别、标签或其他元数据创建一个URL树。这些助记符,或人类可读的url被转换成MySQL数据库查询,以提取正确的基于标题或其他关键字的WordPress内容作为WordPress主循环的一部分,这些将在第5章详细介绍。你的web服务器会根据.htaccess文件中的内容来决定URL是应该被WordPress解析还是引用一个特定的HTML文件,URL重写规则会确保它的内容被正确地解释。从技术上讲,安装WordPress不需要重写URL,但是配置重写非常有价值,因为它为您的内容URL的表示和命名约定提供了巨大的灵活性。永久链接的设计和实践将在第2章中详细介绍,但是在选择你的WordPress基础参数时要记住这一要求。
到目前为止,MySQL只是顺便提到过,但是对MySQL需求的简要回顾会使我们选择主机的预备条件列表更加完善。建立一些术语,然后区分MySQL软件、数据库实例和使用MySQL的WordPress实例是值得的。当你安装和配置MySQL时,你就拥有了一个完整的关系数据库系统。它不需要与你的web服务器配置在同一台机器上,而且一些主机提供商会创建水平可伸缩的MySQL“农场”,并与他们的web服务器前端并行。一个运行在服务器上的MySQL实例可以支持多个数据库,每个数据库都有一个唯一的名称。当你安装WordPress时,你需要知道为你的内容填写MySQL数据库的名称,如果你使用的是一个支持WordPress和MySQL的集成包,这个信息可能会自动生成并为你配置。WordPress会为你创建的每个网站在这个命名的数据库中创建一些关系数据表。
命名方法和复杂性可能导致混淆。你或者的主机提供商可能在多个服务器上运行多个MySQL实例,您需要知道您的数据库托管在哪里。因为每个MySQL实例可以运行多个数据库,并且每个数据库包含一组表,所以使用一个MySQL实例或一个MySQL数据库在同一个主机平台上运行多个基于MySQL的应用程序是可能的,甚至是常见的。
如果你想在同一台服务器上有多个WordPress站点,你可以为所有站点共享一个MySQL数据库实例,只要你配置WordPress来区分MySQL数据库中的MySQL数据库表名。这是一个简单的配置选项,将在下一节中介绍,它强调了数据库中的多组表和不同应用程序的多个数据库之间的区别。
一旦前提条件齐备,我们就可以启动并运行代码了。即使你使用的是一个为你安装MySQL和WordPress的主机提供商,当你在插件开发中需要追踪问题时,了解服务器端组件是如何交互的也是值得的。
当所有东西都正确地配置时,著名的、传说中的、难以置信的5分钟WordPress安装就可以开始了。本节将介绍一些在使用提供商提供的打包安装时通常看不到的步骤,并突出介绍WordPress和MySQL实例之间的一些常见错误。
安装过程非常简单(假设你的web服务器和MySQL服务器已经运行):下载WordPress包并将其安装在你的web服务器的目录树中,然后导航到你的顶级URL并完成配置。一句话就说完了。
在你的笔记本电脑或开发机器上安装一个功能完整的WordPress实例是可能的,甚至是明智的,特别是如果你正在做核心工作比如开发插件,或者在公共网站上进行测试,这些更改都可能导致尴尬失败。
Mac OS X带有一个Apache web服务器(带有PHP和URL重写功能);可以从www.mysql.com下载MySQL,或者使用一个预先打包的安装包,比如MAMP (www.mamp.info,它包含phpMyAdmin工具),这样你将拥有一个独立的开发和部署实验室。对于其他平台,XAMPP (www.apachefriends.org)有一个可以在Windows、Mac OS和Linux基础上运行的完美集成的平台堆栈。此外,虚拟机在您的开发环境中的使用已经大大增加了,现在有一些打包的VM解决方案可以帮助您入门。将所有内容放在一起是检查故障模式好选择,你将在下两节中看到这一点。更多关于本地使用WordPress的信息将在第3章中介绍。
如果你从wordpress.org下载WordPress代码,你会得到一个zip(或tarball)压缩文件,它会解压为一个名为WordPress的目录。安装WordPress的第一部分是将代码放入web服务器的目录结构中;确保你把它放在正确的地方是关键的一步。忽略这部分,你会发现你的网站最终会出现一个类似http://example.com/wordpress的URL,你要么不得不重新开始,要么将丑陋的URL发送给你的朋友和家人。如果这是你想要的——把你的WordPress网站和你的网站上的其他内容区分开来网站还是要隔离多个部分——选择文件系统的布局也同样重要。
选择你想要安装WordPress的根目录。最常见的是,这是你的web服务器的根目录,如果你使用的是托管提供商,它可能是文件树中名为public_html的子目录。如果你在使用打包安装时,会有一个菜单询问你的目标位置,确保你选择了这个顶级目录(是的,你知道它已经存在,这是关键!)如果你使用FTP客户端将文件从本地机器复制到web服务器目标,请确保你选择了正确的目的地。
将zip文件复制到服务器上,然后解包,这将把所有内容放到wordpress中如果你希望你的WordPress站点的URL是http://example.com而不是http://example.com/wordpress,在继续之前将文件移到同一个目录级别。所以如果你把WordPress放入一个不太理想的文件系统,这不是致命的,有一个配置选项可以让你的WordPress安装在你的顶级URL的子目录中。这将在本节的最后介绍。一旦安装了WordPress文件,你的文件系统浏览器会显示如图1-1所示的内容,其中包含一个index.php文件和一个模板。这就是WordPress系统的全部,它将在web服务器的PHP解释器中有效地运行。
此时,如果你正在手动安装wp-config.php文件,你需要通过编辑提供的示例文件wp- config-sample.php来创建自己的wp- config.php文件,并将其保存在你的WordPress根目录下。令一种选择,你可以导航到你的网站的URL, WordPress代码会注意到没有配置文件。选择安装语言后,WordPress会显示如图1-2和1-3所示的对话框,您可以在其中填写详细信息。你需要MySQL数据库名称,数据库用户名,以及WordPress数据库表前缀x(除了默认的wp_)。这些基础的细节是下一节关于数据库配置的核心内容。如果您使用的是带有打包安装的主机提供商,您可能不会看到这个步骤,因为WordPress文件将被提取,MySQL数据库信息将自动插入到配置文件中,其中没有最终用户可服务的部分。
如果你的目标URL中已经有HTML或其他内容,而你想把WordPress添加到现有的站点,你会怎么做?现有文件的处理取决于你在导航到你的URL时期望的样子。要使用WordPress作为内容管理系统,你最好的选择是保存现有的内容,并将其转换为新的文章或页面,有效地使你以前的网站为你的WordPress驱动的网站提供评论和上下文。或者,你可以把WordPress安装在一个子目录下,保留你现有的index.html文件,并通过现有主页上的按钮或链接引导读者到您的新内容。如果你有一个Index .html文件,然后安装WordPress,你就会同时有一个Index .html文件和另一个Index .html文件,用户会根据你网站服务器的目录索引配置看到其中一个或另一个。对现有内容的操作应该根据内容为你的站点带来了多少流量决定:如果您的页面负责搜索引擎流量,你可能不希望破坏已缓存的现有url,而应该把WordPress安装在一个子目录下。如果你强烈想使用WordPress,那么移动内容然后进行URL重写或重定向到进入WordPress的页面。
如果你使用主机提供商的打包安装,或者你手动创建一个wp-config.php文件,然后导航到顶级URL,WordPress应该已经完成了数据库表的创建,为你的WordPress创建了一个管理用户,并设置了一个初始密码,如图1-4所示。请确保您将用户名更改为非admin。
在成功安装之后,您应该看到如图1-5所示的框,它表示完成了著名的5分钟安装。下一节将更详细地介绍MySQL - WordPress的配置,即使SQL会给你带来麻烦,这也值得阅读的。如果你已经启动并运行了WordPress,你可以跳过下一个部分,直接进入“完成”部分。
如果你的主机提供商创建了一个MySQL数据库并为你创建了一个用户,请检查你的wp‐config.php文件来收集这些信息。这对于本节中介绍的MySQL检查是必要的,并且在以后遇到MySQL问题时你会用得上这些信息的。该文件中包含一个用户名和密码组合,因此要像对待其他登录信息一样对待它。另一方面,如果你在“自己动手”的路线上走得比较深,这一段会让你知道在你把碎片拼凑在一起的时候会造成什么可能的混乱后果。
从理论上讲,WordPress的MySQL设置很简单:确保MySQL已经启动并运行,在MySQL中创建一个WordPress用户,然后让该用户创建一个数据库来保存WordPress表。您可以使用MySQL命令行或工具(如phpMyAdmin或Chive)来完成这些任务,但是请记住MySQL有自己的一组用户和授予这些用户的权限,这与你的(或你的主机提供商的)操作系统使用的用户不同。一旦安装了MySQL,它将创建一个默认的用户和授权表,并在Unix系统上添加一个根用户,这是一个MySQL超级用户,与Unix root用户无关。但是,如果你试图以MySQL根用户的身份连接到MySQL实例,这些连接只能在本地主机上建立——MySQL运行在同一台机器上,即只能本地访问。如果你想了解更多关于MySQL权限,控制用户权限的表,以及如何管理MySQL用户,请参考“MySQL参考手册”(http://dev.mysql.com/doc/)和关于保护初始MySQL帐户的章节。
WordPress用户或数据库没有设置命名约定;主机托管提供商通常会附加软件包的名称或的的帐户信息,以区分使用MySQL数据库的多个用户。同样,可以有多个数据库运行在一个MySQL数据库服务器实例中,这些数据库属于同一个用户或不同的MySQL用户。在图1-3所示的示例中,wp 被用作用户名和数据库名的前缀,这至少给数据库管理员提供了一个提示,让他们知道这些是属于WordPress安装的。安全性最佳实践建议不要使用wp 作为表前缀;这将在第13章中详细介绍。WordPress和MySQL之间会出现什么问题?以下是安装失败的三个主要原因。注意,所有这些条件都需要在安装时满足;在你以管理员身份登录之前,必须有一些基本的数据库结构来包含管理员用户。
Web服务器无法找到MySQL。要么你在wp‐config.php文件中错误地填写了MySQL服务器的主机名,要么web服务器正在寻找本地MySQL实例,但无法打开到它的套接字连接。一个简单的例子:当你在MacOS上本地运行WordPress时,MySQL创建了/tmp/MySQL套接字。但是WordPress的PHP代码将通过PHP引擎的MySQL模块查找/var/mysql/mysql。解决方法简单地用符号连接把一个和另一个连接起来:
# ln -s /tmp/mysql.sock /var/mysql/mysql.sock
到本地MySQL套接字的实际路径是数据库配置的一个功能;当它启动时,它创建本地套接字。PHP引擎以及任何基于PHP的应用程序寻找这个套接字都是依赖于PHP配置的。如果你想准确地找出不匹配的地方,printf()风格的调试会有所帮助。
编辑wp‐includes/wp‐db.php,里面有一组用来建立WordPress数据库连接的函数。如果你在安装过程中看到"Error creating a database connection "消息,则插入一个echo(mysql_error())语句检测错误,查看详细信息和通用消息,如图1-6所示:
if (!$this->dbh) {
echo(mysql_error());
$this->bail(sprintf(/*WP_I18N_DB_CONN_ERROR*/"
Error establishing a database connection
mysql_error()函数是一个PHP库函数,它会输出上次调用的MySQL函数产生的错误。
WordPress可以找到MySQL但无法登录。大多数情况下,是因为MySQL用户名或密码错误,特别是当你必须复制主机提供商生成的任意用户名时。仔细检查你的用户名数据,并确认它正确地反映在你的wp-config.php文件里。当使用MySQL 4.1或MySQL 5.0时,你也可能遇到密码认证问题;他们只支持旧的MySQL 4.0密码哈希方案。如果是这样,使用MySQL的OLD_PASSWORD()函数以向后兼容的格式散列你的WordPress用户的密码;使用“神奇的SQL咒语”(在MySQL命令行提示符或在MAMP的SQL窗口内)来解决以下问题:
SET PASSWORD FOR user@host = OLD_PASSWORD('password');
在本例中,user@host是你的WordPress数据库用户名和数据库主机名,password是在配置文件中提供的(明文)密码。
WordPress连接到MySQL,但是不能选择数据库。仅仅因为web服务器可以使用你的WordPress数据库用户信息登录到数据库服务器,并不意味着一定有一个数据库对该用户可用。这是mysql_error()适用另一种情况,通过将其插入wp‐db.php中来识别选择错误:仅仅因为web服务器可以使用你的WordPress数据库用户信息登录到数据库服务器,并不意味着一定有一个数据库对该用户可用。这是mysql_error()适用另一种情况,通过将其插入wp‐db.php中来识别选择错误:
function select($db) {
if (!@mysql_select_db($db, $this->dbh)) {
$this->ready = false;
echo(mysql_error());
$this->bail(sprintf(/*WP_I18N_DB_SELECT_DB*/'
... Can’t select database
...
如果在插入前面描述的mysql_error()语句之后到完成安装,结果出现如图1-7所示的错误框,说明你的MySQL数据库没有在适当的数据库用户下创建,或者数据库用户没有权限使用它。用下面命令行方法再次检查MySQL:
一旦你以指定的MySQL数据库用户登录,你就看不到MySQL数据库了——在这种情况下,它可能是由MySQL用户root创建的,并且访问或修改它的权限没有授予WordPress安装的MySQL用户。如果你有MySQLroot权限,或者有足够的MySQL用户权限在MySQL实例中创建新的数据库,那么可以在命令行登录后创建一个数据库:
同样,区分操作系统用户、MySQL用户和WordPress用户是很重要的。MySQL用户是在数据库中定义的,并被授予创建数据库、处理表和生成有用数据的特权。WordPress用户存在于安装过程中创建的WordPress数据库表中;一旦你登录到WordPress 他们只有内容权限。
一旦你完成了一个全新的WordPress安装,应该会看到一个根据你在wp‐config.php中设置的表前缀x命名的数据库表集合;同样,使用MySQL命令行验证这一点很简单:
在本例中,将数据库表前缀设置为wp_;如果你稍后使用相同的数据库用户和实例添加另一个WordPress安装,你可以简单地设置一个不同的前缀,让这两个站点混合在同一个数据库表中。在第6章中,您将深入了解基本的WordPress数据库表的模式和用法。现在一旦你高连接到MySQL,你就可以进行一些最后的清理工作和第一次管理工作了。
此时,你的MySQL数据库已经启动并运行。你的网站中有一个主页,你的web服务器正在愉快地执行WordPress核心代码。但还有几件事要讨论一下。
一旦你完成了安装,使用你在图1-4中设置的凭证继续登录,你会看到基本的WordPress仪表板如图1-8。
如果你不重定向到仪表板通过登录按钮,或者你直接访问了你的网站的顶层URL,你可以单击你的网站上的登录链接或显式地访问wp-admin子目录(example.com/wp-admin)然后会看到一个登录对话框。登录到你的网站,你就会进入WordPress仪表盘,它的界面简单得令人惊讶,但它展露的功能却非常的复杂。
下一步如何使用Dashboard仪表盘取决于你对基本安装的满意程度。如果像前面的例子一样,你最终得到的是一个旧版本的WordPress,你可以点击更新按钮来更新到最新的版本。WordPress除了具有强大的自我安装功能外,还包括自我更新功能(你要查找这些功能的话,可以在wp‐admin/includes/update.php中找到)。
你可能想要改变一些基本的配置选项,比如数据库名或MySQL数据库用户,但是如果你完全控制了web和数据库服务器,你只会改变默认的root@localhost。配置文件还包含用于为浏览器cookie提供更强安全性的“安全密钥”条目。安全密钥将在第13章进行更详细的讨论。编辑wp‐config.php文件会立即影响更改。例如,改变数据库表前缀x,会导致WordPress实例化一组新的表并创建一个全新的安装。进行这些编辑,然后回到顶级URL,你会发现自己有新的管理用户信息,并登录到启动器仪表盘,如图1-8所示。旧表不会从MySQL中删除,所以你必须手动清理。
如果你想把你的URL设置为与你安装WordPress的位置不同,你可以从仪表盘中选择设置和常规,改变你的顶级URL和WordPress安装目录的URL。如果你将你的网站的URL和WordPress目录分开,确保你将index.php文件移动到你想要的顶级URL,然后编辑最后一行包含正确的WordPress子目录路径。
在创建你的第一篇文章之前,设定永久链接结构也是一个好主意,这样你写的每一篇文章都遵循你所选择的命名约定,这样读者就可以相对容易地找到、分享和链接到你的内容。正如预期的那样,它是仪表板的设置部分中的另一个选项;下一章将更详细地介绍永久链接命名的选项及其对性能和数据库模式的影响。
不管你是花了5分钟,还是花了几个小时检查主机名、用户名和数据库配置中的不匹配,现在你可以发布你自己写的第一篇文章了。
一个成功的WordPress安装已经发布了第一个帖子和评论,从而确保所有的移动部件都是一致的,并给你的网站一些初始内容。当你准备添加你自己的第一篇内容时,你可以使用仪表板上右手边的QuickDraft面板来发布一个条目(你可能首先需要关闭新的网站帮助),或者到Posts并点击add new进入内置的WordPress编辑器。图1-9显示了QuickDraft面板中正在进行的条目,紧随其后的是成功发布后更新的Dashboard。
如果你的品味更老派,你总是可以在你最喜欢的文本编辑器中写出内容,然后复制到编辑面板中。如果你想要复制到WordPress的HTML合成窗口中,请小心使用WYSYIWIG文字处理程序,比如Microsoft word或openoffice,因为HTML会充满额外的标签和样式信息。最后,各种独立的编辑器使用Atom发布协议或XML‐RPC发布到WordPress。如你所料,在“写入选项”下的“仪表板设置”部分中有允许远程发布帖子的选项。
到了点击发布为你自己的“Hello World”时刻了。WordPress的多个子系统创建了这个编辑窗格,然后将内容保存在数据库中,生成并保存参考元数据,然后发出漂亮的HTML。大多数用户通过可见的部件如仪表盘进行管理,它某些功能将在后面不同章节中介绍。
本章介绍了WordPress是如何发展到今天的,并简要介绍了它目前的流行程度。WordPress在网络领域的崛起部分归功于安装过程的简单。下一章将深入WordPress的核心,这样你就可以充分利用它的可扩展性、友好的设计和功能。