wordpress框架代码分析,任何请求都是进入index.php中,随后会调用wp-blog-header.php, 这个文件主要干三件事:

1. 加载wp_load.php文件,这个文件包含了一些需要用到的类库。算是准备下环境。

2. wp() 这里面是处理url实际的信息,并加载相应的数据。

主要处理逻辑函数 class-wap.php中的main()入口,接下来调用到query_posts()函数。调到 class-wp-query.php中的get_posts函数。

3. 加载template-loader.php文件,这个是根据上一步的返回结果加载模板文件。

 

一些关键的全局变量:

global $wp_query;  //这里包含了请求的关键信息,比如是否是404, 是否是主页,是否是搜索页面。


一些常用的函数:
apply_filters($tag, $value) ,调用$tag名称的钩子函数,修改对应的$value,返回的是修改后的$value值。
wp-includes/下的class-wp-query.php中的get_posts()方法。这个代码段有1400行左右。我们来分析下这个流程。
do_action_ref_array的作用

关于调用流程 为什么得不到图像的问题

1,plugin/portfolio.php 中 1718行
获取$post_thumbnail_id 为空?
是为什么会为空?
发布的时候为空?
获取Post信息, 调用get_post_meta。 key为_thumbnail_id

数据存在”wp_postmeta” 中, 有个_prtfl_images字段,字段中的值代表的意思
121,84,83,82,81 代表的是同一张表中的post_id;
SELECT * FROM `wp_postmeta` where post_id=121;

wp_cache_get(post_id, group是空的, 获取出来)
key为_thumbnail_id
_edit_lock
“_edit_last”:,”_edit_lock”:,”prtfl_information””_prtfl_images”:

那就是insert的时候要把_thumbnail_id一起塞进去就可以了 找到insert的地方

改动portfolio.php 789
update_post_meta( $post->ID, ‘_thumbnail_id’, $attachments[0] );
838
update_post_meta( $post_id, ‘_thumbnail_id’, $attachment_ids[0] );