WordPress 主题的 functions.php 与插件该怎么分
摘要
很多人把所有代码都塞进 functions.php,换主题时全部作废。这条界限值得一开始就划清楚。判断标准:换主题之后还需要吗?只要答案是需要,就放进插件。功能归属注册导航菜单、侧栏主题自定义文章类型(作品集)插件短代码 [year]插件文
很多人把所有代码都塞进 functions.php,换主题时全部作废。这条界限值得一开始就划清楚。
判断标准:换主题之后还需要吗?
只要答案是需要,就放进插件。
| 功能 | 归属 |
|---|---|
| 注册导航菜单、侧栏 | 主题 |
| 自定义文章类型(作品集) | 插件 |
| 短代码 [year] | 插件 |
| 文章内容的样式类 | 主题 |
| 统计代码、SEO meta | 插件 |
| 图片尺寸定义 | 主题 |
functions.php 里应该有什么
add_theme_support()系列声明register_nav_menus()wp_enqueue_style/script的排队- 主题特有的图片尺寸、模板标签
建议把 functions.php 拆成 inc/ 目录再加 include,保持单文件不超过两三百行,方便维护。
常见的错误做法
- 在 functions.php 里写 SQL 直接改表
- 把插件级别的功能做成短代码塞主题里,用户换主题后页面上一片空白只剩短代码文本
- 用
after_setup_theme里注册 CPT,这会因为加载顺序不稳定而出问题
子主题的正确用法
改别人的主题不要直接改,建子主题,在子主题的 functions.php 里覆盖父主题的函数。但要注意:父主题如果写成 if (!function_exists('xxx')) 才执行的风格,子主题才能覆盖;写死了函数名的父主题,子主题覆盖会直接导致全站白屏。
所属专题
2026年10月20日 14:58
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日