`
baiyuxiong
  • 浏览: 179252 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

【转载】wordpress源代码研究-前台运行流程

阅读更多
http://lgone.com/html/y2009/214.html

最近改BLOG的东西真是改得我有点恶心了,昨天想加一个音乐播放的插件,最后弄得我连小工具栏都没了还没装上。今天早上用最原始的调试方法调了十多分钟才发现原来是有一行代码不见了。囧,真的是不见了,空行还留在那,就是少了一行,真TM诡异,加上那一行一切OK。所以我痛下决心一定要好好研究一下WP的源码。

废话扯完了,下面是学到的一些东西:

首先我们要明白,WP是一个单入口的东西,也就是说他的所有前端处理都是在一个index.php里的。但是为什么我们经常看到的不是index.php?XXXX。。而是像现在你看到这篇文章的URL一样,他不是index.php啊,嗯,确实不是,这个真不是!

其实这是一个rewrite的小把戏,你看到我的URL是这样的,其实我的目录里根本就没这个文件,当没有这个文件的时候,我的.htaccess文件(相当于apache对这个目录的配置)就将这个请求导向index.php。然后index.php分析一下我的URL,就知道我实际要做的是什么了,他会像你请求index.php?p=num一样处理这个请求。所以就变成了看到是一个样,做的又是另一个样了。

最原始的WP根目录下是没有.htaccess文件的,你把固定链接改一下,改成其它的模式,就会生成这个.htaccess 了,不信可以试一下,我可不是70km的,我经得起考验。

为什么要费这么多事呢?这样因为这样的话URL看起来更好看,对搜索引擎也更友好。

(PS:当然,有一些静态化的插件,他们可能又有不同的原理。我还没有研究过,以后再说。)

我们知道我们最伟大的就是这个index.php了,那看看他有什么呢?它其实非常简单,基本上就一行,就是包含wp-blog-header.php



wp-blog-header.php完成两个动作,一个初始环境相关的一些数据,一个调用主题包模板进行显示。也就是一个是把数据准备好,一个是把这些数据显示出来。

初始环境,调用了:wp-load.php

wp-load.php主要就是包含了wp-config.php,其实就是定义了一些宏变量(DB设置,密钥,路径,语言)然后wp-config.php在最后调用wp-settings.php

这个wp-settings.php得重点说一下,他真的比较强大了,主要的工作都是这丫干的。他先是做了很多细节上的东西,比如关闭register-globales,运行时间计算等。。。基本你看一下也就差不多。

最重要的是他在运行过程中调用了很多的action和filter.

什么是action和filter呢,这是WP的插件机制的核心实现,说白了就是一些hook在一定位置上的函数,程序运行到那里就会执行。这个过程我以后会独立出来写。

反正就是把好多变量都取到了,比如哪些变量呢?比如有哪些插件,插件的信息,比如用户相关的信息。。反正是很多,就是在这个页面可能会用到的都取了,只是不会SB到去取所有文章这种东西。

这些数据现在是以PHP的数据类型存在于内存中的,后面一步就是调用模板了,其实调用很简单,就是包含。为什么一包含他就可以显示那么多数据呢??我们都用过Smarty。那Smarty在用之前还要把要用的参数assign..然后再用display调用模板呢。为什么这个这么简单呢,说实话,因为Smarty在这方面更强大。

我们这个就是个动态的东西,比如你现在看到这个页面,他要显示文章标题,文章内容,文章标签,还有一些其它的公共的东西,有的数据已经在前面取到内存中了,我们只要调用约定好的方法就可以取到了,但有的数据(比如文章标题,内容)他们还在数据库里,我们不能直接用,其实这时候也有通用的接口,你只要调用一个函数,就有程序乖乖地去给你从数据库里取东西了。这都是早就封闭好了的。方便吧。

然后呢,你看到这个页面,他是一个模板,他又不是一个模板,是这样的:他本是一个单独的模板,但是这个模板里面又调用了其它的模板。比如这个header.每个页面都一样,footer也是,右边基本上也是,每个页都一样。所以他们在模板里是单独的PHP文件(header.php,footer.php),完整的页面的模板只是实现了中间这一部分,上和下都是通过包含这些一小块一小块的模板来呈现的。

大概就是这样吧。其实真TM是挺简单的,下一篇再讲插件机制,其实也不难,我发现WP看起来最困难的就是他对每个细节的处理都那么精准。好多问题要是我写肯定写不到那么完美。比如你可以看一下wp-settings.php里面那些包含的文件,他们各司其职,每一个文件都那么完美!!

整个文章我没有贴代码,因为代码大家都有,所以自己看一下更好。我也偷个懒。其实我写这个本来也是在和我的健忘症做斗争。

最后我想说一下我的感觉,很早以前就想看WP,一年前吧,尝试看了三四次,都没有看完。

一个东西不是看不看得懂,而是你是不是真的要去看。I CAN!
分享到:
评论

相关推荐

    wordpress系统源代码简约版

    这个"wordpress系统源代码简约版"很可能是一个精简版的WordPress核心源码,可能是为了教学、研究或定制目的而制作的。 在WordPress中,主要的组成部分包括以下几个方面: 1. **核心框架**:WordPress的核心框架...

    Iphone开发系列源码——iPhone版Wordpress源代码

    Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...

    WordPress Docker镜像-php8.3-fpm-alpine

    WordPress具有易用性、灵活性和扩展性的特点,用户无需深入了解代码,便可以管理网站内容。 Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何...

    IOS应用源码Demo-WordPress源代碼-毕设学习.zip

    通过研究源代码,开发者可以深入理解iOS应用开发的基本概念,网络通信,以及如何将后端数据适配到移动应用的前端展示中。同时,对于学生和初学者,它也提供了一次模拟实际项目开发的实践机会,有助于提升技能和项目...

    wordpress采集插件wp-autopost-pro3.7.8

    1. **性能优化**:对代码进行了优化,提高运行效率,减少服务器负载。 2. **稳定性提升**:修复了已知的bug,保证插件在各种环境下都能稳定运行。 3. **兼容性增强**:与最新版本的WordPress及主流主题、其他插件...

    wordpress-6.4.2-zh_CN.zip

    此压缩包"wordpress-6.4.2-zh_CN.zip"包含了最新版本的 WordPress 6.4.2 的中文版,为中文用户提供了方便的语言支持。下面将详细探讨这个版本中的关键知识点以及如何进行安装和使用。 一、WordPress 6.4.2 更新亮点...

    wordpress-4.8.1-zh_CN

    此外,WordPress的代码编辑器也得到了升级,支持代码高亮和自动完成,提高了开发效率。 总结 WordPress 4.8.1中文版不仅提升了用户的使用体验,还增强了网站的功能性和安全性。无论你是新手还是经验丰富的开发者,...

    wordpress采集插件wp-autopost-pro wordpress4.9以上版本完美使用

    1. **自动采集**:WP-AutoPost-Pro能够定期检查指定的网页或RSS源,自动获取新的文章或信息,并将其导入到WordPress站点中。 2. **定时发布**:用户可以设置特定的发布时间,让采集到的内容在预设的时间自动发布,...

    wordpress采集插件wp-autopost-pro最新破解版

    wordpress采集插件wp-autopost-pro最新破解版wordpress采集插件wp-autopost-pro最新破解版

    wordpress-6.4.3-zh_CN.zip

    本压缩包“wordpress-6.4.3-zh_CN.zip”包含的是WordPress的最新稳定版本——6.4.3的中文语言包,为国内用户提供了更友好的操作界面。接下来,我们将详细探讨这个版本中的关键特性、更新内容以及如何有效利用...

    wordpress-6.1.1-zh_CN.zip

    5. 自定义开发:WordPress的开放源代码特性使得开发者可以深度定制,通过编写主题和插件实现个性化需求。 总之,WordPress 6.1.1中文版不仅提供了丰富的功能,还持续改进用户体验,无论是新手还是经验丰富的开发者...

    WordPress for Android源代码

    《WordPress for Android源代码解析与探索》 WordPress for Android源代码是开源社区的一份宝贵资源,为Android开发者提供了深入理解移动应用开发的实践案例。这个项目不仅展现了如何将流行的WordPress内容管理系统...

    wordpress-4.8.1-zh_CN.tar.gz

    这个名为"wordpress-4.8.1-zh_CN.tar.gz"的压缩包文件,正是WordPress 4.8.1版本的中文版,旨在为中文用户带来更加友好的使用体验。 WordPress 4.8.1是这个开源项目的稳定版本,它在前一个版本的基础上进行了多方面...

    wordpress Android客户端源代码

    这份源代码不仅能够帮助我们深入理解Android应用的开发流程,还能让我们洞悉WordPress API的使用技巧以及移动应用与服务器端的交互机制。 一、Android客户端架构 WordPress Android客户端的源代码通常会采用MVP...

    wordpress-3.5.1-zh_CN

    wordpress-3.5.1-zh_CN wordpress-3.5.1-zh_CN wordpress-3.5.1-zh_CN wordpress-3.5.1-zh_CN wordpress-3.5.1-zh_CN 解压后放到你的php环境的项目目录中,运行项目即可 换主题可以上网上搜一下

    wordpress-4.7-zh_CN.zip

    首先,"wordpress-4.7-zh_CN.zip"这一文件名明确指出,我们正在讨论的是WordPress的4.7版本,且已进行了中文本地化,这对于中国用户来说无疑是一大福音。中文界面使得操作更加直观,降低了新手入门的难度。 ...

    WordPress果酱插件wpjam-插件合集

    7. **wpjam-debug**:调试插件通常用于帮助开发者检测和解决网站错误,提供有关性能和代码问题的详细信息,以优化网站运行效率。 8. **wpjam-sticky-posts**:此插件使用户能够设置“固定”(sticky)帖子,使其...

    wordpress-4.1-zh_CN

    本篇文章将深入探讨“wordpress-4.1-zh_CN”这一中文版本的核心特点、功能更新以及如何利用它来构建一个强大的个人博客系统。 一、WordPress 4.1的中文支持 “wordpress-4.1-zh_CN”版本是WordPress为了更好地服务...

    wordpress 代码分析整理

    `【转载】Wordpress源代码分析之settings.php之一.htm` 和 `【转载】Wordpress源代码分析之settings.php之二.htm` 重点关注了WordPress的设置API。这个API允许开发者创建和管理后台设置页面,为用户提供自定义选项...

    WordPress采集插件wp-jpost

    **WordPress采集插件WP-JPost详解** WordPress采集插件WP-JPost是一款专为WordPress平台设计的高效内容采集工具,由国内开发者精心打造。这款插件的出现,旨在帮助用户快速、方便地从互联网上获取有价值的信息,并...

Global site tag (gtag.js) - Google Analytics