基本思想php
PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。css
PHP代码的能够完成功能:显示出html的字符串标签的代码。WordPress的首页index.php的get_header()、get_sidebar()、get_footer()等函数返回的结果用echo输出是带有html标签的代码段。html
<!--条件判断--> <?php if (is_category()) { ?> <div class=”pagetitle”>‘<?php single_cat_title(); ?>’ 分类下的文章</div> <!–显示下面是哪一个分类下的文章列表,‘ ’ 分别是左右单引号,下同–> <?php } else if( is_tag() ) { ?> <div class=”pagetitle”>‘<?php single_tag_title(); ?>’ 标签下的文章</div> ………… <?php } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?> <div class=”pagetitle”>日志归档</div> <?php } ?>
当浏览器向apache发送请求要获得博客主页的HTML代码时,./index.php被调用。./index.php中的require(‘./wp-blog-header.php’);调用./wp-blog-header.php。
而./wp-blog-header.php作了一些连接数据库包含头文件等处理,其中有两件事情与主题调用有关:
一、有require_once( dirname(__FILE__) ./wp-includes/functions.php’);
而./wp-includes/functions.php中包含进了./wp-includes/theme.php,这里定义了get_home_template()。数据库
function get_home_template() {//返回所要加载的主题 $template = ”; if ( file_exists(TEMPLATEPATH . “/home.php”) ) $template = TEMPLATEPATH . “/home.php”; elseif ( file_exists(TEMPLATEPATH . “/index.php”) ) $template = TEMPLATEPATH . “/index.php”; return apply_filters(‘home_template’, $template);
其中apply_filters()的做用是:将$template hook到tag=’home_template’的filters上并返回$template,也就是主题包的路径。apache
二、有require_once(ABSPATH . WPINC . ‘/template-loader.php’);
调用了./wp-includes/template-loader.php(ABSPATH表明./, WPINC表明/wp-includes)。
而./wp-includes/template-loader.php中有:浏览器
} else if ( is_home() && $template = get_home_template() ) { include($template); return;
get_home_template()将 主题包路径返回给$template,这里的include($template);语句就把./wp-content/themes/主题名/index.php(好比日志如今所用的主题路径就是./wp-content/ade/index.php)包含进去了。因而开始执到./wp-content/themes/ade/index.php里面的代码了,接下来就是该主题内部的事情了。架构
各个页面的加载过程大体相同,下面以首页为例说明。显示首页的时候,Wordpress只调用index.php,在index.php定义了要加载那些模板以及其加载顺序。通常状况是:header.php->页面主要内容(index,page,signle等页面都有其本身的定义)->sidebar.php->footer.phpapp
其实对于一个可以提供theme的程序而言,在程序的构架上必需要实现数据和表现的分离。一般咱们所说的MVC(Model、View、Controller)架构就是这个意思。ide
在WordPress中,是这样来实现数据和实现的分离的。
1. XHTML:用Div等用来表现数据,CSS来描述这些数据的表现形式,用这种方式来实现数据和表现的分离;
2. Template的方式:页面各个部分单独保存为一个一个.php文件(如上面的sidebar.php,footer.php等),页面加载时候调用所需代码。wordpress
好比<?php comments_template(); ?>就返回了留言框的所需代码。
在好比index中有:
<?php get_footer(); ?>
<?php get_header(); ?>
“get_header”和”get_footer”分别用来获得该页的header和footer,其实就是两个div块儿。index的主体一样是一个大的div(<div id=”content”>),在该theme的CSS中便可以看到对这个div的表现定义,包括字体、背景颜色、边距等等。这里惟一的 id=content来告诉浏览器,这个标签内的内容显示在CSS中定义的content部分样式里面。