zoukankan      html  css  js  c++  java
  • wordpress源码阅读

    记录下自己阅读wordpress的过程。打算先整体过一遍。

    我下载的wordpress版本是4.9.5。

    首先是入口文件index.php

    仅仅只是告诉要使用主题,然后加载wordpress环境和模板。

    进入wp-blog-header.php文件看看

    使用单例的方式执行if中的内容。主要包括3个部分。

    一、加载wp-load.php  //加载wordpress需要的库

    二、wp();   //设置 wordpress 查询,这里是wordpress的主要执行部分。

    三、加载template-loader.php  // 主题模板

    wp-load.php 是引导文件,设置绝对路径常量,加载wp-config.php文件,该文件主要设置数据库用户密码等数据。设置错误输出,等wordpress环境设置。这里还有一个防止嵌套安装的判断。

    wp-config.php设置了数据库信息,debug模式,加载wp-settings.php。

    wp-settings.php修复常见的变量和包含wordpress的程序和函数库

    主要引入了wp-includes中的

    load.php  //wordpress自己的函数类库

    default-constants.php  //定义常量和全局变量

    plugin.php //加载插件的一些API

    加载version.php  //主要是所需的db,php,wordpress版本支持信息

    然后执行wp_initial_constants();顾名思义是要初始化了。设置wordpress的运行时内存。定义很多常量。

    wp_check_php_mysql_versions();  //检查wordpress的mysql版本是否支持

    禁用魔术引导,定义时区,关闭register_globals防止用户字段被注册成全局变量

    wp_fix_server_vars();  //标准化$_SERVER变量

    wp_favicon_request();  //检查请求,如果是请求favicon.ico的不用加载全部wordpress

    这里header的作用不是很清楚,mark一下,明天找找相关的答案。

    wp_maintenance();  //检查是否处于维护模式,可以提示更新版本

    time_start(); //记录wordpress开始时间

    wp_debug_mode();  //检查是否处于debug模式

    定义不存在的函数

    if(!function_exists('_')) {

      function _($string) {

        return $string;

      }

    }

    if语句的不同写法

    if (XXX) :

    XXX;

    endif;

    主要是检查是否有因为php版本太早而缺失的函数,来补充实现。

    后面是wordpress自己写的自动类加载函数。

    require( ABSPATH . WPINC . '/compat.php' );

    wordpress使用list 函数
    require( ABSPATH . WPINC . '/class-wp-list-util.php' );

    wordpress主要的函数库API
    require( ABSPATH . WPINC . '/functions.php' );


    require( ABSPATH . WPINC . '/class-wp-matchesmapregex.php' );
    require( ABSPATH . WPINC . '/class-wp.php' );
    require( ABSPATH . WPINC . '/class-wp-error.php' );  //错误类
    require( ABSPATH . WPINC . '/pomo/mo.php' );

    require_wp_db(); //开始加载数据库类

    wp_start_object_cache();  //开始wp对象缓存

    require( ABSPATH . WPINC . '/default-filters.php' );  //加载默认filter

    多占点的配置

    add_filter和apply_filter的一些使用

    register_shutdown_function( 'shutdown_action_hook' );  //程序结束前清理输出缓冲区

    wp_not_installed()  如果没有安装则运行wp安装程序

    $GLOBALS['wp_embed'] = new WP_Embed(); 用户插入视频

    wp_plugin_directory_constants() 定义wp-content路径

    定义cookie相关常量

    定义并执行ssl常量

    等环境配置。

    wp();来看wp方法。

    public function main($query_args = '') {
    $this->init();  //设置当前用户
    $this->parse_request($query_args); //解析查询请求
    $this->send_headers();  //设置http头
    $this->query_posts();  //根据查询变量设置Loop
    $this->handle_404();  //如果找不到,设置404
    $this->register_globals();  //注册全局变量

    /**
    * Fires once the WordPress environment has been set up.
    *
    * @since 2.1.0
    *
    * @param WP $this Current WordPress environment instance (passed by reference).
    */
    do_action_ref_array( 'wp', array( &$this ) );  //wordpress环境变量准备完成之后执行  
    }

    后面就是加载模板

  • 相关阅读:
    【Canvas】摆线模拟
    【JS】JS正则表达式常见用法(验证、查找和替换)
    【Canvas】将屏幕坐标系转换成笛卡尔坐标系
    【Canvas】狗撵兔子和贝塞尔曲线
    精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换
    用Javascript实现HtmlEncode与HtmlDecode的另类方法
    [Javascript] 如何在客户端验证表单被改变
    关于IE6和IE7关闭窗口时提示和不提示以及上传图片前的本地预览解决办法
    项目开发经验谈(一)
    Windows 7 开发新特性
  • 原文地址:https://www.cnblogs.com/warmsun/p/8983412.html
Copyright © 2011-2022 走看看