主题函数

函数.php可以由经典主题、块主题和子主题使用。

这个函数.php文件是您为WordPress主题添加独特功能的地方。它可以用于连接WordPress的核心功能,使主题更加模块化、可扩展和功能化。

什么是functions.php?

这个函数.php该文件的行为类似于WordPress插件,为WordPres站点添加特性和功能。您可以使用它调用WordPress函数并定义自己的函数。

使用插件或函数.php。如果您正在创建新功能,无论网站外观如何,这些功能都应可用,最好的做法是将它们放在插件中.

使用WordPress插件或使用函数.php.

WordPress插件:

  • 需要特定、唯一的标题文本;
  • 存储在wp-content/plugins中,通常位于子目录中;
  • 仅在激活时在页面加载时执行;
  • 适用于所有主题;
  • 应该只有一个目的&例如,提供搜索引擎优化功能或帮助备份。

与此同时函数.php文件:

  • 不需要唯一的标题文本;
  • 存储在wp-content/themes的主题子目录中;
  • 仅在活动主题目录中执行;
  • 仅适用于该主题(如果主题发生更改,则无法再使用这些功能);
  • 可以有用于多种不同目的的大量代码块。

每个主题都有自己的函数文件,但只有活动主题中的代码函数.php实际上正在运行。如果主题已经有函数文件,则可以向其添加代码。如果没有,则可以创建名为函数.php添加到主题目录中,如下所述。

一个子主题可以有自己的函数.php文件。将函数添加到子函数文件是修改父主题的无风险方法。这样,当父主题更新时,您就不必担心新添加的功能会消失。

尽管子主题函数.phpWordPress在父主题之前加载函数.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-经典主题

您的functions.php文件

如果您选择包含上面列出的所有功能,这是您的函数.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');