这篇文章将会主要从子主题的角度介绍,当你【版权所有】唐霜 www.tangshuang.net【版权所有,侵权必究】完全了解WordPress中的子主题(c转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。hild themes)之后,就可以很自【本文首发于唐霜的博客】【本文首发于唐霜的博客】然的知道get_template和get原创内容,盗版必究。转载请注明出处:www.tangshuang.net_stylesheet的区别。以及,在你【作者:唐霜】【作者:唐霜】自己的主题开发中,可以非常好的实践Wor【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】dPress中关于主题继承的思想了。
本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】【原创不易,请尊重版权】【本文首发于唐霜的博客】原创内容,盗版必究。问题的产生【访问 www.tangshuang.net 获取更多精彩内容】
【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。当我们从网上下载安装了一款非常不错的主题【版权所有,侵权必究】【作者:唐霜】之后,某一天,突然发现某个细节需要进行修转载请注明出处:www.tangshuang.net【版权所有,侵权必究】改。然而你不愿意直接修改这个主题,因为这本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net个主题一旦升级,你的修改就被覆盖掉了。你原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。也不愿意把主题代码全部拷贝一份,改造成自【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net己的主题,因为这种行为太愚蠢了。有没有什转载请注明出处:www.tangshuang.net【本文受版权保护】么办法,可以通过自己的代码,不破坏原主题【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net的同时,对它进行覆盖呢?
【原创内容,转载请注明出处】【本文首发于唐霜的博客】本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.net本文版权归作者所有,未经授权不得转载。wordpress提供的主题继承的思想和转载请注明出处:www.tangshuang.net【原创不易,请尊重版权】机制可以实现这一目标。你需要建立一个子主【访问 www.tangshuang.net 获取更多精彩内容】【原创内容,转载请注明出处】题,这个子主题中存在一个字段,指定它所继【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net承的父主题。而通过子主题的一些代码,可以著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。部分覆盖父主题的一些代码,从而实现你自己著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】的一些功能。
【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net【关注微信公众号:wwwtangshuangnet】子主题本文作者:唐霜,转载请注明出处。
著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】【作者:唐霜】wordpress子主题的官方介绍文档在这里【访问 www.tangshuang.net 获取更多精彩内容】,阅读时间大概是10分钟。文档不仅介绍了【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】什么是子主题,而且告诉你一些最佳实践。本【本文受版权保护】【原创不易,请尊重版权】文也将对这些内容进行梳理。
本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】转载请注明出处:www.tangshuang.net【转载请注明来源】【访问 www.tangshuang.net 获取更多精彩内容】代码层面的概念本文版权归作者所有,未经授权不得转载。
【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。我们都知道wordpress的主题在wo本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshuang.netrdpress开发中占据着非常重要的地位【本文受版权保护】【访问 www.tangshuang.net 获取更多精彩内容】。我们创建一个主题,通过撰写代码,上传到未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】themes目录,到后台启用,就可以使用【本文首发于唐霜的博客】未经授权,禁止复制转载。新主题了。而子主题本质上也是一款新主题,【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】和其他任何主题没有本质的区别。当你开发完原创内容,盗版必究。转载请注明出处:www.tangshuang.net一款子主题之后,上传到themes目录,本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net也要到后台去启用这款(子)主题,启用之后【原创内容,转载请注明出处】【转载请注明来源】,也需要做各种初始化工作,和使用其他各种【原创内容,转载请注明出处】本文作者:唐霜,转载请注明出处。主题没有多大的区别。
本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net【转载请注明来源】那么为什么我们要写子主题,而不是干脆开发本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】一款新主题?除了文章开头的那种情况之外,原创内容,盗版必究。【未经授权禁止转载】写子主题可以帮助你快速编程,还有可能帮你【访问 www.tangshuang.net 获取更多精彩内容】【原创不易,请尊重版权】实现一些特殊的工程效果,比如我的博客,我【访问 www.tangshuang.net 获取更多精彩内容】本文作者:唐霜,转载请注明出处。自己另外开发了一个插件,可以使手机访问时【原创内容,转载请注明出处】【未经授权禁止转载】博客使用的是子主题。子主题继承了父主题很【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】多功能。
转载请注明出处:www.tangshuang.net【本文受版权保护】著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】创建子主题【未经授权禁止转载】
【原创不易,请尊重版权】本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【未经授权禁止转载】【原创内容,转载请注明出处】如前所述,子主题本质上也是一款主题,你得【未经授权禁止转载】【版权所有,侵权必究】像开发一款新主题一样,创建一个文件夹,然【作者:唐霜】【作者:唐霜】后在里面至少放置两个文件:
原创内容,盗版必究。【转载请注明来源】【本文受版权保护】原创内容,盗版必究。- style.css本文版权归作者所有,未经授权不得转载。 【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net
- functions.php著作权归作者所有,禁止商业用途转载。 【版权所有】唐霜 www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshuang.net
一般主题必须有index.php,但是子【版权所有】唐霜 www.tangshuang.net原创内容,盗版必究。主题可以复用父主题的index.php,【原创内容,转载请注明出处】原创内容,盗版必究。所以不是必须的。
著作权归作者所有,禁止商业用途转载。【版权所有】唐霜 www.tangshuang.net【作者:唐霜】得到上面两个文件之后,你需要在style【未经授权禁止转载】【原创不易,请尊重版权】.css的开头写上主题的信息,和一款新主【版权所有,侵权必究】【原创内容,转载请注明出处】题一样。但是,最关键【本文受版权保护】的是,你必须指定Template字段:【本文受版权保护】
【原创不易,请尊重版权】【未经授权禁止转载】本文作者:唐霜,转载请注明出处。/*
Theme Name: Twenty Fifteen Child
Template: twentyfifteen
Version: 1.0.0
*/
红色的这一行决定了你当前这款主题将继承当未经授权,禁止复制转载。【版权所有,侵权必究】前系统中存在的哪一款主题。至于你当前的子【原创不易,请尊重版权】【未经授权禁止转载】主题叫什么名字,完全都是自由的,只有这个【本文受版权保护】未经授权,禁止复制转载。Template字段非常重要。
【转载请注明来源】未经授权,禁止复制转载。本文版权归作者所有,未经授权不得转载。如果你仅仅是想看看效果,现在就可以把这个本文作者:唐霜,转载请注明出处。原创内容,盗版必究。主题目录上传到wordpress,到后台本文版权归作者所有,未经授权不得转载。【关注微信公众号:wwwtangshuangnet】启动它。因为现在你什么都没有做,你会发现【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net,你的博客的界面和twentyfifte著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。en是一模一样。
【版权所有,侵权必究】【版权所有,侵权必究】转载请注明出处:www.tangshuang.netget_template和get_sty原创内容,盗版必究。【作者:唐霜】lesheet
【未经授权禁止转载】【原创不易,请尊重版权】【本文首发于唐霜的博客】未经授权,禁止复制转载。现在我们来研究一下wordpress里面【原创不易,请尊重版权】未经授权,禁止复制转载。的get_template和get_st本文作者:唐霜,转载请注明出处。著作权归作者所有,禁止商业用途转载。ylesheet。简单的说get_tem本文版权归作者所有,未经授权不得转载。【作者:唐霜】plate是获取options表里面的t未经授权,禁止复制转载。【原创不易,请尊重版权】emplate字段的值,get_styl【原创不易,请尊重版权】原创内容,盗版必究。esheet则是获取stylesheet【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net的值。所以,你可以用get_blogin【关注微信公众号:wwwtangshuangnet】【未经授权禁止转载】fo(‘template【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。8217;)得到相同的信息。
【作者:唐霜】【版权所有】唐霜 www.tangshuang.net
那么template和styleshe本文版权归作者所有,未经授权不得转载。【转载请注明来源】et到底是什么鬼呢?
template就是当前使用的主题(父主转载请注明出处:www.tangshuang.net原创内容,盗版必究。题)的名称(实际上是主题的目录夹名称),【作者:唐霜】【本文受版权保护】stylesheet是当前使用的子主题的【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】名称,如果没有启用子主题,实际上这两者是【原创不易,请尊重版权】本文版权归作者所有,未经授权不得转载。一样的,如果启用的主题style.css【版权所有】唐霜 www.tangshuang.net【作者:唐霜】中存在Template字段,那么这个字段【原创不易,请尊重版权】【未经授权禁止转载】的值会被保存给template。
【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。【未经授权禁止转载】所以这样一来就非常简单了,一个主题被启用本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。时,它的名称(目录夹名称)会被作为wor本文作者:唐霜,转载请注明出处。原创内容,盗版必究。dpress系统的stylesheet值未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.net保存起来,倘若style.css中存在T【本文首发于唐霜的博客】【本文首发于唐霜的博客】emplate字段,这个字段的值会被作为【原创不易,请尊重版权】【原创内容,转载请注明出处】wordpress系统的template著作权归作者所有,禁止商业用途转载。本文作者:唐霜,转载请注明出处。值保存起来,而如果不存在Template本文版权归作者所有,未经授权不得转载。未经授权,禁止复制转载。字段,则它自己的名称会被作为wordpr【本文受版权保护】未经授权,禁止复制转载。ess系统的template值保存起来。
本文作者:唐霜,转载请注明出处。【原创不易,请尊重版权】未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。基于这个理论,也可以非常轻松的理解get【版权所有,侵权必究】【版权所有】唐霜 www.tangshuang.net_stylesheet_director转载请注明出处:www.tangshuang.net【本文首发于唐霜的博客】y_uri和get_template_d本文作者:唐霜,转载请注明出处。【转载请注明来源】irectory_uri这两个函数的区别【作者:唐霜】【未经授权禁止转载】了。
【版权所有,侵权必究】【未经授权禁止转载】【本文受版权保护】【转载请注明来源】原创内容,盗版必究。继承和代码覆盖本文版权归作者所有,未经授权不得转载。
本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。【原创内容,转载请注明出处】但知道上面的道理,只能读懂别人写的代码。转载请注明出处:www.tangshuang.net【版权所有,侵权必究】自己要灵活运用还需要知道另外两件事:
著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net【未经授权禁止转载】未经授权,禁止复制转载。【转载请注明来源】- 子主题的functions.php执行完原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net之后会同时立即执行父主题的functio本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】ns.php 【访问 www.tangshuang.net 获取更多精彩内容】【本文首发于唐霜的博客】原创内容,盗版必究。
- 子主题如果不存在某个模板文件,将会使用父未经授权,禁止复制转载。未经授权,禁止复制转载。主题的 著作权归作者所有,禁止商业用途转载。【转载请注明来源】【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】【版权所有,侵权必究】
这两点看上去都非常简单,但是却深坑不断,本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。不好好研究会让你在写代码时很烦躁。
【未经授权禁止转载】【原创内容,转载请注明出处】【版权所有,侵权必究】函数的覆盖【原创不易,请尊重版权】
【作者:唐霜】【原创不易,请尊重版权】原创内容,盗版必究。functions.php就像theme未经授权,禁止复制转载。未经授权,禁止复制转载。内部的plugin机制一样,先于很多东西本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】执行。而如果子主题的functions.【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.netphp先执行,那么就可以通过在子主题的f【版权所有】唐霜 www.tangshuang.net本文版权归作者所有,未经授权不得转载。unctions.php中写一些函数来覆【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net盖父主题里面的一些函数,比如父主题里面有【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.net一个函数function post_li【本文受版权保护】【转载请注明来源】sts(),你觉得需要对它进行覆盖,那么【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】可以在子主题的functions.php【原创不易,请尊重版权】【未经授权禁止转载】中写同名函数……等等,这会报错的!除非父著作权归作者所有,禁止商业用途转载。【作者:唐霜】主题的这个函数被一个if (!funct【原创不易,请尊重版权】【本文首发于唐霜的博客】ion_exists(‘po本文作者:唐霜,转载请注明出处。【关注微信公众号:wwwtangshuangnet】st_lists’))包裹着未经授权,禁止复制转载。【版权所有,侵权必究】。
【作者:唐霜】【本文受版权保护】【未经授权禁止转载】【访问 www.tangshuang.net 获取更多精彩内容】没错,继承并没有看上去那么容易。如果一款【转载请注明来源】转载请注明出处:www.tangshuang.net主题的开发者,开发的时候没有考虑到自己的原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。主题可能被继承,那么就会留下这些深坑。这【关注微信公众号:wwwtangshuangnet】【访问 www.tangshuang.net 获取更多精彩内容】些坑在下文还会遇到。因此,如果你是一个主转载请注明出处:www.tangshuang.net著作权归作者所有,禁止商业用途转载。题的开发者,应该多谢if (!funct【作者:唐霜】本文作者:唐霜,转载请注明出处。ion_exists(‘po【本文首发于唐霜的博客】原创内容,盗版必究。st_lists’))来留个转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net子主题开发的可能性。
【版权所有,侵权必究】未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】转载请注明出处:www.tangshuang.net样式和脚本的继承原创内容,盗版必究。
【作者:唐霜】【本文受版权保护】【版权所有】唐霜 www.tangshuang.net【本文受版权保护】你在子主题里面写了自己的header.p【未经授权禁止转载】【转载请注明来源】hp,而且在子主题中有自己的css样式表【版权所有,侵权必究】【关注微信公众号:wwwtangshuangnet】。但是你觉得应该复用父主题的样式,这样可本文作者:唐霜,转载请注明出处。【作者:唐霜】以减少写很多样式的时间。一种想法是使用@本文作者:唐霜,转载请注明出处。【未经授权禁止转载】import来实现样式的引用,当然,这是原创内容,盗版必究。【原创不易,请尊重版权】非常不可取的,wordpress的建议是著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。使用wp_enqueue_style和本文版权归作者所有,未经授权不得转载。wp_enqueue_scripts,这需要在你的子主题functions.【访问 www.tangshuang.net 获取更多精彩内容】【转载请注明来源】php中这么写:
add_action( 'wp_enqueue_style', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
总之,你需要先了解【原创内容,转载请注明出处】wp_enqueue_style和【原创内容,转载请注明出处】wp_enqueue_scripts。转载请注明出处:www.tangshuang.net
get_template_directo本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】ry_uri
【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。原创内容,盗版必究。【本文受版权保护】在子主题中使用get_template_【本文受版权保护】【本文首发于唐霜的博客】directory_uri()是获取父主本文版权归作者所有,未经授权不得转载。本文作者:唐霜,转载请注明出处。题的主题目录路径,而在父主题中使用get本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net_stylesheet_director未经授权,禁止复制转载。转载请注明出处:www.tangshuang.nety_uri可以获取子主题的目录路径。所以【作者:唐霜】【本文首发于唐霜的博客】,一个主题的开发者,应该使用get_st本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】ylesheet_directory_u著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。ri而非get_template_dir未经授权,禁止复制转载。【版权所有】唐霜 www.tangshuang.netectory_uri来获取当前被启用的主【本文首发于唐霜的博客】未经授权,禁止复制转载。题的路径。但是如果你确定要使用某张图片,本文版权归作者所有,未经授权不得转载。【版权所有,侵权必究】而这张图片明显是在父主题的目录里,那么就著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。应该使用get_template_dir转载请注明出处:www.tangshuang.net本文作者:唐霜,转载请注明出处。ectory_uri。
未经授权,禁止复制转载。【原创不易,请尊重版权】未经授权,禁止复制转载。总之,这对一个主题的开发者(而非子主题的【关注微信公众号:wwwtangshuangnet】【关注微信公众号:wwwtangshuangnet】开发者)产生了要求,它要求你时刻保持清醒原创内容,盗版必究。著作权归作者所有,禁止商业用途转载。的大脑,你要时刻提醒自己“我的主题可能被【本文受版权保护】本文作者:唐霜,转载请注明出处。继承”。如果有了这种想法,在父主题的he【本文受版权保护】转载请注明出处:www.tangshuang.netader.php中使用了get_styl【未经授权禁止转载】【本文受版权保护】esheet_directory_uri【原创不易,请尊重版权】原创内容,盗版必究。,那么有可能子主题就不需要自己再写一个h【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。eader.php来改变样式文件的引用地【本文首发于唐霜的博客】【本文受版权保护】址了。
【作者:唐霜】【原创内容,转载请注明出处】【转载请注明来源】转载请注明出处:www.tangshuang.net对于子主题的开发者而言则轻松的多,只要记本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。住get_stylesheet_dire【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】ctory_uri是获取子主题的路径,g转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。et_template_director【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。y_uri是获取父主题的路径即可。
著作权归作者所有,禁止商业用途转载。转载请注明出处:www.tangshuang.net【版权所有】唐霜 www.tangshuang.net【版权所有】唐霜 www.tangshuang.net不改变后台配置的情况下切换主题本文版权归作者所有,未经授权不得转载。
未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。【原创内容,转载请注明出处】【作者:唐霜】本文作者:唐霜,转载请注明出处。这是我的博客的一种实现方式,后台是一切正【作者:唐霜】著作权归作者所有,禁止商业用途转载。常的,当手机访问博客的时候,通过代码层面本文版权归作者所有,未经授权不得转载。【未经授权禁止转载】实现使用子主题(其实也就是另外一款主题)【版权所有,侵权必究】【原创不易,请尊重版权】。
本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.net【原创不易,请尊重版权】在wordpress里面,代码层面实现强转载请注明出处:www.tangshuang.net【未经授权禁止转载】制使用某个主题有两种方式,一种是通过de本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.netfine覆盖配置,另一种是通过add_f著作权归作者所有,禁止商业用途转载。【转载请注明来源】ilter修改某些结果。我的做法是add【本文受版权保护】【本文受版权保护】_filter:
未经授权,禁止复制转载。【本文首发于唐霜的博客】【本文受版权保护】【版权所有】唐霜 www.tangshuang.net【未经授权禁止转载】function DeviceThemeExtends($template) {
// 这里要做手机端的检查,省略了
return $template + '-mobile'
}
add_filter('template','DeviceThemeExtends' );
// 如果是使用子主题,上面这一行要注释掉,
// 因为如果使用子主题,实际上表示template值和stylesheet值是不同的
add_filter('stylesheet','DeviceThemeExtends' );
总结【版权所有】唐霜 www.tangshuang.net
【原创不易,请尊重版权】未经授权,禁止复制转载。【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】通过这篇文章的讲解,你对wordpres转载请注明出处:www.tangshuang.net【转载请注明来源】s子主题这个内容应该有了大致的了解。其实未经授权,禁止复制转载。转载请注明出处:www.tangshuang.net你只需要记住两个重要的点:1.子主题的f【本文受版权保护】【版权所有】唐霜 www.tangshuang.netunctions.php先于父主题的fu【本文受版权保护】【转载请注明来源】nctions.php执行;2.get_【关注微信公众号:wwwtangshuangnet】本文版权归作者所有,未经授权不得转载。stylesheet_directory原创内容,盗版必究。未经授权,禁止复制转载。_uri和get_template_di未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。rectory_uri在子主题中得到不同【版权所有,侵权必究】【版权所有,侵权必究】的结果。这两点记住了,一般就比较少出现问未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。题了。
著作权归作者所有,禁止商业用途转载。原创内容,盗版必究。【版权所有】唐霜 www.tangshuang.net转载请注明出处:www.tangshuang.net【未经授权禁止转载】2018-01-13 6362


