2017-09-20

猎数博客

数据挖掘,机器学习

wordpress 3.1 代码 index.php(二)

作者:江航 / 2011-04-30 / (阅读 1,572 次) /



继续没有读完的index.php.
前面读到wp-settings.php引入跟语言有关的/pomo/mo.php。接下来引入

  • l10n.php  关于语言本地化相关的函数定义
  • class-wp-walker.php   一个用来显示各种树状结构的类,这个估计比较有用的
  • class-wp-ajax-response.php:   Send XML response back to AJAX request
  • formatting.php : 各种格式化相关的函数,很多是在前面default_filter.php中注册的filter。比如capital_P_dangit
  • capabilities.php: 用户,角色,权限相关的类
  • query.php 定义类WP_Query,同时定义了很多和查询相关的函数,比如判定当前是不是homepage,是不是singlepost 之类
  • theme.php 定义了跟主题相关的函数,比如获取主题数据,判别主题的功能等等
  • user.php 添加用户,用户登录,查询某用户的文章等函数
  • meta.php Functions for retrieving and manipulating metadata of various WordPress object types
  • general-template.php  定义get_header,get_footer 之类的函数。在get_header中会调用用户注册的get_header动作
  • link-template.php link相关的函数定义
  • author-template.php   Author Template functions for use in themes. These functions must be used within the WordPress Loop
  • post.php   Post函数和相关的工具函数
  • post-template.php  post模板函数
  • category.php
  • category-template.php
  • comment.php
  • comment-template
  • rewrite.php
  • feed.php
  • bookmark.php
  • bookmark-template.php
  • kses.php
  • cron.php
  • deprecated.php
  • script-loader.php
  • taxonomy.php
  • update.php
  • canonical.php
  • shortcodes.php
  • media.php
  • http.php
  • class-http.php
  • widgets.php
  • nav-menu.php
  • nav-menu-template.php
  • admin-bar.php

这里有太多的文件了,先列在这里,今后再一个一个看。通过这么多文件的引入,基本上所需要的函数定义估计都在这里了。下面估计就是函数调用的部分了。

接下来,设置一些multisite相关的东西。这里先不关注。

再下面到引入vars.php,其中不是函数定义而是建立了一些变量,比如客户的浏览器,web服务器类型等。

然后调用以下函数

  • create_initial_taxonomies
  • create_initial_post_types
  • register_theme_directory  注册主题目录
  • 寻找插件并引入插件

 

接下来就是实例化几个全局变量,建立主题:

$wp_the_query = new WP_Query();

$wp_query = $wp_the_query;

$wp_rewrite = new WP_Rewrite();

$wp =new WP();

$wp_widget_factory = new WP_Widget_Factory();

do_action( ‘setup_theme’ )

…

wp_templating_constants(  );

load_default_textdomain();

$locale = get_locale();

$locale_file = WP_LANG_DIR . “/$locale.php”;

$wp_locale =new WP_Locale();if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . ‘/functions.php’ ) )

include( STYLESHEETPATH . ‘/functions.php’ );      //加载主题的functions.php

if ( file_exists( TEMPLATEPATH . ‘/functions.php’ ) )

include( TEMPLATEPATH . ‘/functions.php’ );

do_action( ‘after_setup_theme’ );

require_if_theme_supports( ‘post-thumbnails’, ABSPATH . WPINC . ‘/post-thumbnail-template.php’ );

register_shutdown_function( ‘shutdown_action_hook’ );

$wp->init();  //初始化

do_action( ‘init’ );

do_action(‘wp_loaded’);

至此,我们马马虎虎的读完了wp-setting.php这个文件,这个文件是被wp-blog-header.php引入的,现在回到wp-blog-header.php看这个文件被调用以后发生的事情,即wp()函数:

function wp( $query_vars = ” ) {

global $wp, $wp_query, $wp_the_query;

$wp->main( $query_vars );
if ( !isset($wp_the_query) )

$wp_the_query = $wp_query;

}

这里的WP()函数调用了WP类的main函数。在这个函数里完成了数据库的查询相关的工作。
接下来看template-loader.php:
主要调用了函数do_action(‘template_redirect’)。 主要的显示部分应该在templater_redirect这些函数里面。

————————-
关于add_filter,wp中有一个全局变量$wp_filter,其中保存了所有的filter,所谓filter,就是一些函数。可以通过 apply_filters来调用。后面我们会详细解读add_filter 和apply_filters这两个函数,了解其中的原理。



Wordpress一览无余,源码面前没有秘密,wordpress的函数调用库,展示wordpress页面打开过程中十几万个函数调用,学习WP开发的绝佳资源。点击这里进入

本文地址: http://www.bagualu.net/wordpress/archives/266 转载请注明






相关文章

  • 再说Wordpress中添加小挂件widget( 5,869 )
  • Wordpress中添加自定义参数( 3,411 )
  • WordPress代码之apply_filters( 3,272 )
  • 微博分享按钮( 3,226 )
  • WordPress版权声明插件( 3,199 )
  • wordpress函数调用库( 2,634 )
  • 通过wpdb访问WordPress数据库( 2,443 )
  • 通过wordpress debug插件,显示filter调用过程( 2,404 )
  • 用Wordpress做相册( 2,398 )
  • WordPress 代码之 add_filter( 2,337 )
  • Leave a Reply

    您必须登录以发表评论,

    沪ICP备11036560号
    联系我: jianghang at bagualu.net