这个函数.php
文件是您为WordPress主题添加独特功能的地方。它可以用于连接WordPress的核心功能,使主题更加模块化、可扩展和功能化。
这个函数.php
该文件的行为类似于WordPress插件,为WordPres站点添加特性和功能。您可以使用它调用WordPress函数并定义自己的函数。
使用插件或函数.php
。如果您正在创建新功能,无论网站外观如何,这些功能都应可用,最好的做法是将它们放在插件中.
使用WordPress插件或使用函数.php
.
WordPress插件:
- 需要特定、唯一的标题文本;
- 存储在wp-content/plugins中,通常位于子目录中;
- 仅在激活时在页面加载时执行;
- 适用于所有主题;和
- 应该只有一个目的&例如,提供搜索引擎优化功能或帮助备份。
与此同时函数.php
文件:
- 不需要唯一的标题文本;
- 存储在wp-content/themes的主题子目录中;
- 仅在活动主题目录中执行;
- 仅适用于该主题(如果主题发生更改,则无法再使用这些功能);和
- 可以有用于多种不同目的的大量代码块。
每个主题都有自己的函数文件,但只有活动主题中的代码函数.php
实际上正在运行。如果主题已经有函数文件,则可以向其添加代码。如果没有,则可以创建名为函数.php
添加到主题目录中,如下所述。
一个子主题可以有自己的函数.php
文件。将函数添加到子函数文件是修改父主题的无风险方法。这样,当父主题更新时,您就不必担心新添加的功能会消失。
尽管子主题函数.php
WordPress在父主题之前加载函数.php
,它没有覆盖它。子主题的函数.php
可以用于增强或替换父主题的功能。同样函数.php
已加载加载任何插件文件后.
使用函数.php
你可以:
- 使用WordPress挂钩。例如,使用这个
摘录_长度
过滤器你可以改变你的文章摘录长度(从默认的55个单词开始)。
- 启用WordPress功能
添加主题支持()
例如,打开帖子缩略图、帖子格式和导航菜单。
- 定义要在多个主题模板文件中重用的函数。
在WordPress中,当两个或多个函数、类或变量具有相同的名称时,可能会发生命名冲突。这可能会在WordPress站点中导致错误或意外行为。主题开发人员和插件开发人员都有责任避免各自代码中的命名冲突。
主题开发人员应该确保他们的函数、类和变量具有唯一的名称,这些名称不会与WordPress核心或其他插件使用的名称冲突。它们还应该在函数和类名前面加上唯一的标识符,例如主题名或缩写,以将命名冲突的可能性降到最低。
下面是一些示例,您可以在functions.php文件中使用它们来支持各种功能。如果您选择将这些示例提交到WordPress.org主题目录,则可以在主题中使用这些示例。
当您的主题被激活时,最初运行的“设置”功能中应该包含许多主题功能。如下所示,这些功能中的每一个都可以添加到您的函数.php
激活推荐的WordPress功能。
用主题名命名函数很重要。以下所有示例都使用我的第一个主题_
作为它们的名称空间,应该根据主题名进行自定义。
要创建此初始函数,请启动一个名为myfirsttheme_setup()
,如下所示:
如果(!function_exists('myfirsttheme_setup')):/***设置主题默认值并注册对各种WordPress的支持*功能。**在init钩子之前设置这些函数很重要,所以*这些功能都没有丢失。**@自MyFirstTheme 1.0以来*/函数myfirsttheme_setup(){…}
注意:在上述示例中,函数myfirsttheme_setup已启动但未关闭。确保关闭您的函数。
自动馈送链接
默认情况下,自动提要链接支持发布和评论RSS提要。这些提要将显示在<头部>
自动。可以使用调用它们添加主题支持()
经典主题。此功能将自动为块主题启用,并且在主题设置期间不需要包含此功能。
add_theme_support('自动馈线');
在经典主题中,定制导航菜单允许用户在菜单管理面板中编辑和自定义菜单,为用户提供拖放界面,以编辑其主题中的各种菜单。
您可以在中设置多个菜单函数.php
。可以使用添加寄存器_可用_菜单()
并使用插入到主题中wp_nav_menu()
,如前所述本手册后面部分。如果主题允许多个菜单,则应使用数组。虽然某些主题没有自定义导航菜单,但建议您允许使用此功能以便于自定义。
register_nav_menus(数组('primary'=>__('主菜单','myfirsttheme'),'辅助菜单'=>__('辅助菜单','我的第一主题')) );
您定义的每个菜单稍后都可以使用调用wp_nav_menu()
并使用指定的名称(即主名称)作为主题_位置
参数。
在块主题中,使用导航块而不是。
加载文本域
通过使主题中的字符串可用于翻译,可以将主题翻译为多种语言。为此,必须使用load_theme_textdomain()
。有关使主题可供翻译的更多信息,请阅读国际化第节。
load_theme_textdomain('myfirsttheme',get_template_directory()。'/语言);
文章缩略图
发布缩略图和特色图像允许用户选择一个图像来代表他们的帖子。您的主题可以根据其设计决定如何显示它们。例如,您可以选择在存档视图中显示每篇文章的缩略图。或者,您可能希望在主页上使用大型特色图像。此功能将自动为块主题启用,并且在主题设置期间不需要包含此功能。
add_theme_support('后缩略图');
文章格式
发布格式允许用户以不同的方式设置帖子的格式。这对于允许博客根据文章内容选择不同的格式和模板很有用。添加主题支持()
也用于后期格式。这是推荐.
add_theme_support('post-formats',array('aside','gallery','quote','image','video'));
了解有关帖子格式的更多信息。
区块主题中的主题支持
在块主题中,将自动启用以下主题支持:
add_theme_support('后缩略图');add_theme_support('响应嵌入');add_theme_support('编辑器样式');add_theme_support('html5',数组('style','script'));add_theme_support(“自动馈送链接”);
初始设置示例
包括上述所有功能将为您提供函数.php
像下面这样的文件。已添加代码注释,以便于将来澄清。
如本例底部所示,您必须添加所需的添加操作()
声明以确保我的第一个主题_设置
函数已加载。
如果(!function_exists('myfirsttheme_setup')):/***设置主题默认值并注册对各种*WordPress功能。**注意,这个函数被挂接到after_setup_theme*钩子,它在init钩子之前运行。初始化挂钩太晚了*用于某些功能,例如指示支持文章缩略图。*/函数myfirsttheme_setup(){/***使主题可用于翻译。*翻译可以放在/languages/目录中。*/load_theme_textdomain('myfirsttheme',get_template_directory()。'/语言);/***将默认帖子和评论RSS提要链接添加到<head>。*/add_theme_support('自动馈线');/***启用对文章缩略图和特色图像的支持。*/add_theme_support('后缩略图');/***添加对两个自定义导航菜单的支持。*/register_nav_menus(数组('primary'=>__('主菜单','myfirsttheme'),‘secondary’=>__(‘secondary Menu’,‘myfirsttheme’),) );/***启用对以下帖子格式的支持:*旁白、图库、引用、图像和视频*/add_theme_support('post-formats',array('aside','gallery','quote','image','video'));}endif;//我的第一个主题_设置add_action('after_setup_theme','myfirsttheme_setup');
在经典主题中,内容宽度被添加到函数.php
文件以确保没有内容或资产破坏站点的容器。内容宽度设置添加到网站的任何内容(包括上传的图像)的最大允许宽度。在下面的示例中,内容区域的最大宽度为800像素。没有比这更大的内容了。
if(!isset($content_width)){$content_width=800;}
包含theme.json配置文件的主题不需要在functions.php中包含变量。相反,内容宽度被添加到theme.json中的布局设置中。你可以在高级部分了解有关使用theme.json的更多信息.
您可以在中包含其他常见功能函数.php
。下面列出了一些最常见的功能。单击浏览并了解有关每个功能的更多信息。
- 自定义页眉 -经典主题
- 文献类文章(小部件区域)-经典主题
- 自定义背景-经典主题
- 标题标签-经典主题
- 添加编辑器样式
- HTML5-经典主题
如果您选择包含上面列出的所有功能,这是您的函数.php可能看起来像。已对上述内容进行了评论。
/***MyFirstTheme的功能和定义**@包MyFirstTheme*@自MyFirstTheme 1.0以来*//***首先,让我们根据主题设置最大内容宽度*设计和样式表。*这将限制所有上传图像和嵌入的宽度。*/if(!isset($content_width)){$content_width=800;/*像素*/}如果(!function_exists('myfirsttheme_setup')):/***设置主题默认值并注册对各种*WordPress功能。**注意,这个函数被挂接到after_setup_theme*钩子,它在init钩子之前运行。初始化挂钩太晚了*用于某些功能,例如指示支持帖子缩略图。*/函数myfirsttheme_setup(){/***使主题可用于翻译。*翻译可以放在/languages/目录中。*/load_theme_textdomain('myfirsttheme',get_template_directory()。'/语言);/***将默认的帖子和评论RSS提要链接添加到<head>。*/add_theme_support('自动馈线');/***启用对文章缩略图和特色图像的支持。*/add_theme_support('后缩略图');/***添加对两个自定义导航菜单的支持。*/register_nav_menus(数组('primary'=>__('主菜单','myfirsttheme'),'辅助'=>__('辅助菜单','我的第一主题'),) );/***启用对以下帖子格式的支持:*旁白、图库、引用、图像和视频*/add_theme_support('post-formats',array('aside','gallery','quote','image','video'));}endif;//我的第一个主题_设置add_action('after_setup_theme','myfirsttheme_setup');