WordPress代码和分析-页面模板是从哪里来的(这是一个可以让人奔溃的设计)
2017-06-27 17:06
766 查看
今天看到WordPress中的可以自定义页面模板,很好奇在添加页面时,这些页面模板的选项从哪里来的?
首先找到Post.php,竟然没有找到这区域是在post.php的那个函数内输出的,后来通过查找输出页面Html代码,找到了输出位置是在wp-admin/includes/meta-boxes.php的“page_attributes_meta_box”方法中。
page_attributes_meta_box方法就是用来显示页面属性,它被“edit-form-advanced.php”页面所调用,使用的语句是:
在meta-boxes.php中,使用了page_template_dropdown方法来输出select的内容。
在这个方法中,首先通过get_themes方法获取所有的模板,然后再通过get_current_theme()获取到当前的模板保存信息。通过输出$theme的内容,我们获取的是一个所有模板的目录列表。wordpress是通过什么来确定哪个模板是页面模板?
通过”$template_data = implode( '', file( $template )); “方法来获取模板的内容。然后通过正则匹配有在模板内容中指定”Template Name“的模板,获取的模板名后,这个模板就是页面模板。我们可以打开wordpress默认自带的模板”onecolumn-page.php“在这个模板的注释部分可以看到” * Template Name: One column, no sidebar“我们如果需要给wordpress增加新的页面模板的话,就需要在模板中带上Template
Name这个注释,wordpress就自动会把这个模板识别成页面模板。下图为获取模板值部分的关系图:
Tips
可以通过在wp-config.php中把define('WP_DEBUG', false);设置为true,就可以通过print_r和die来逐步输出我们需要查看的内容。
首先找到Post.php,竟然没有找到这区域是在post.php的那个函数内输出的,后来通过查找输出页面Html代码,找到了输出位置是在wp-admin/includes/meta-boxes.php的“page_attributes_meta_box”方法中。
page_attributes_meta_box方法就是用来显示页面属性,它被“edit-form-advanced.php”页面所调用,使用的语句是:
通过”$template_data = implode( '', file( $template )); “方法来获取模板的内容。然后通过正则匹配有在模板内容中指定”Template Name“的模板,获取的模板名后,这个模板就是页面模板。我们可以打开wordpress默认自带的模板”onecolumn-page.php“在这个模板的注释部分可以看到” * Template Name: One column, no sidebar“我们如果需要给wordpress增加新的页面模板的话,就需要在模板中带上Template
Name这个注释,wordpress就自动会把这个模板识别成页面模板。下图为获取模板值部分的关系图:
Tips
可以通过在wp-config.php中把define('WP_DEBUG', false);设置为true,就可以通过print_r和die来逐步输出我们需要查看的内容。
相关文章推荐
- WordPress代码和分析-页面模板是从哪里来的
- WordPress代码和分析-页面模板是从哪里来的
- js模板,我们可以在<script>片断中定义一个被JS调用的代码,但代码又不在页面上显示.
- 一个可以返回前一页并自动刷新页面的ASP代码.
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,发两张图,等完全做好了,给大家共享!
- java代码--请设计一个方法,可以实现任意范围内的随机数
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
- 最近设计了一个生成asp代码的程序,同时也可以作为数据库管理查询的软件,有兴趣的朋友可以去下载!
- B2C外贸网站产品设计和功能需求,一个产品设置了在多个类别里面都可以看到,以及Email模板问题
- 一个页面可以重复调用的TAB选项卡切换js代码 鼠标悬浮
- 设计模式observer在ajax中的一个应用,解决页面onload函数同一时间只有一个可以用
- 设计算法并写出代码移除字符串中重复的字符,不能使用额外的缓存空间。注意: 可以使用额外的一个或两个变量,但不允许额外再开一个数组拷贝。
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
- 基本上,把switch,用设计模式代替,肯定是bug和过度设计。想想,本来修改一个文件几行代码可以解决的问题,变成修改3-6个类才能实现一样的功能。不是傻是什么?
- 只有20行Javascript代码!手把手教你写一个页面模板引擎
- 结对编程就是两个人用同一个设计、同一个算法以及同一段代码,并且两人的角色可以随时互换;
- 对于一个糟糕的设计来说,通过阅读C++代码你可以很容易地识别出它。
- thinkphp在前端页面的js代码中可以使用 U方法吗? 可以使用模板变量如__URL__等吗?
- 一个包含动态变量的短信模板设计分析
- 只有20行Javascript代码!手把手教你写一个页面模板引擎