天天看点

走进wordpress 详细说说template-loader.php

再看template-laoder.php,这个文件总共只有45行。它的作用是基于访问的URL装载正确的模板.

文件第六行,也是第一条语句,如下:

首先判断是否使用Themes,这个WP_USE_THEMES常量在index.php中第一句就被设置为true。因此条件成立,会执行do_action(‘template_redirect’)语句。

‘template_redirect’的Action(动作)在include下的文件中出现。除了这里的do_action外,还有其他三个文 件中:default-filters.php,和ms-default-filters.php中以及canonical.php中出现。不包括wp- content目录下面出现的。

canonical.php (411行):  add_action(‘template_redirect’, ‘redirect_canonical’);

default-filters.php(200行): add_action( ‘template_redirect’,   ‘wp_shortlink_header’,11, 0 );

default-filters.php(243行):  add_action( ‘template_redirect’, ‘wp_old_slug_redirect’);

ms-default-filters.php(32行):  add_action( ‘template_redirect’, ‘maybe_redirect_404′ );

ms-functions.php(1353行):  add_action( ‘template_redirect’, ‘redirect_mu_dashboard’ );

default-filters.php文件设置了wordpress大部分默认的filter和action。文件内容都是诸如下面的形式。

add_action( ‘xxx’,'xxxx’);

ms-default-filters.php是多站点时候设置的,内容类似default-filters.php。wordpress默认情况下没有开启多站点。如果需要开启,请按照wordpress的指导文件操作。

wp_old_slug_redirect() 在query.php2807行,slug是什么?slug是url的一部分。在wordpress后台的永久链接设置(/wp-admin /options-permalink.php)里,用户可以自定义链接格式。绝大多数自定义的用户喜欢在url中包含由文章标题生成的一串字符,这一串 字符就是post slug。这个函数功能是重定向old slug到正确的链接。

接下来是个判断语句;

is_robots函数判断当前查询是否是robot。位于query.php491行。

do_robots函数位于functions.php1779行。作用:显示robot.txt的内容。

然后是个大的if语句:

这个大if语句中形如get_xxxx_template()的函数都定义在theme.php中。

以get_index_template为例:作用在当前或父模板下检索index模板路径,位置在theme.php725行。

在这个函数里面,就把主题的模板给装载进来了,如何操作的?马上来~~

本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/4741046.html,如需转载请自行联系原作者

继续阅读