functions.php文件我们为WordPress主题添加功能的唯一位置。我们可以在其中把自定义功能挂载到WordPress的核心功能上,使我们的主题更加模块化、更具扩展性、功能更加丰富。

  什么是functions.php?

  functions.php文件的行为类似于WordPress插件,为WordPress网站添加一些特性和功能。我们可以使用它来调用WordPress函数或定义自己函数。

  使用插件或functions.php可以产生相同的结果。如果我们正在为主题创建新功能,无论网站是什么样的,最好将它们放在插件中。

  使用WordPress插件或functions.php各有利弊:

  使用WordPress插件:

  需要特定的,唯一的标题文本;

  存储在wp-content/plugins中

  仅在激活时执行;

  适用于所有主题

  应该有一个特定目的–例如,提供搜索引擎优化功能或帮助备份。

  使用functions.php文件:

  不需要唯一的标题文本;

  存储在wp-content/themes中的主题子目录中;

  仅在主题激活时执行;

  仅适用于该主题(如果主题更改,则无法再使用这些功能)

  可以有许多代码块,实现各种功能

  每个主题都有自己的函数文件,但只有在激活主题的functions.php文件中的代码会被直接执行。如果我们的主题已有function.php文件,我们可以添加代码到这个文件中。如果没有,我们需要先创建这个文件。

  子主题可以拥有自己的functions.php文件。向子主题的函数文件添加函数是修改父主题的无风险方法。当更新父主题时,我们不必担心添加的新功能会消失。

  虽然子主题的functions.php在父主题的functions.php之前加载,但他不会覆盖父主题的文件。子主题functions.php可用于扩充或替换父主题的功能。同时,functions.php在加载任何插件文件后加载。

  在functions.php中,我们可以:

  使用WordPress钩子。例如,使用excerpt_length过滤器,我们可以更改文章摘录长度(默认为55个单词)。

  使用add_theme_support()函数启用WordPress功能。例如,启用缩略图,文章格式和导航菜单。

  定义需要在主题的其他模板文件中重用的函数。

  如果在WordPress插件和主题的functions.php中调用相同的函数或filter,可能会产生意外的结果,极端情况下甚至会导致我们的网站无法访问。

  functions.php内容示例

  下面是一些示例,我们可以在functions.php文件中使用这些示例来支持各种功能。如果我们选择将其提交到WordPress.org主题目录,我们可以在自己的主题中使用这些示例中的任意一个。

  主题设置

  许多主题功能应包含在“设置”功能中,该功能在激活主题时运行。如下所示,我们可以将这些函数添加到自己主题的functions.php文件中,以激活推荐的WordPress功能。

  使用主题名称为函数名加一个前缀非常重要。以下所有示例都myfirsttheme_用作命名空间,我们可以根据自己的主题名称进行定义。

  要创建此初始函数,我们需要新建一个名为myfirsttheme_setup()的函数,如下所示:

  if(!function_exists('myfirsttheme_setup')):

  /**

  *设置主题默认值,并注册一些WordPress功能

  *在init钩子之前设置这些函数非常重要,以确保这些功能不会失效

  * since MyFirstTheme 1.0

  */

  function myfirsttheme_setup(){

  注意:在上面的示例中,函数myfirsttheme_setup已打开但未关闭。一定要关闭我们的函数

  自动Feed链接

  我们可以使用add_theme_support()函数为主题添加automatic-feed-links功能支持,默认情况下,该功能可以发布帖子和评论RSS Feed。这些Feed将在<head>自动显示。

  add_theme_support('automatic-feed-links');

  导航菜单

  自定义导航菜单可以让用户在菜单管理面板中编辑和自定义菜单,为用户提供拖放界面来编辑主题中的各种菜单。

  我们可以使用register_nav_menus()函数在functions.php中设置多个菜单。并使用wp_nav_menu()将它添加插入到主题中,如果我们主题允许多个菜单,可以使用数组。虽然某些主题没有自定义导航菜单,但建议启用此功能以一变用户可以轻松的管理网站菜单。

  register_nav_menus(array(

  'primary'=>__('Primary Menu','myfirsttheme'),

  'secondary'=>__('Secondary Menu','myfirsttheme')

  ));

  我们定义的每个菜单都可以使用wp_nav_menu()调用,调用菜单式,指定菜单名称名称(如:primary)为该函数的theme_location参数值即可。

  加载文本域

  通过使主题中的字符串可翻译,主题可以被翻译成多种语言。为此,我们必须使用load_theme_textdomain()函数来设置翻译文件。有关使主题可用于翻译的更多信息,请阅读国际化部分。

  load_theme_textdomain('myfirsttheme',get_template_directory().'/languages');

  文章缩略图

  文章缩略图和特色图片可让用户选择一个图像来代表他们的文章。我们可以根据主题设计来决定如何显示它们。例如,我们可以选择在存档页面中显示每个文章的文章缩略图。或者,我们可能希望在主页上使用大幅特色图像。虽然并非每个主题都需要特色图片,但建议为主题添加缩略图支持。

  add_theme_support('post-thumbnails');

  文章格式

  文章格式允许用户以不同的方式格式化他们的帖子。这对于允许网站管理员根据文章内容选择不同的格式和模板很有用。add_theme_support()也可以用来启用文章格式。

  add_theme_support('post-formats',array('aside','gallery','quote','image','video'));

  详细了解文章格式。

  内容宽度

  我们可以添加一个内容宽度变量到functions.php文件中,以确保网站内容或文件不会破坏网站布局。内容宽度设置了允许添加到我们网站的任何内容的最大允许宽度,包括上传的图片。在下面的示例中,内容区域的最大宽度为800像素。网站上显示的内容不会超过这个宽度。

  if(!isset($content_width))

  $content_width=800;

  其他功能

  我们还可以在functions.php中包含其他常见功能。下面是一些最常见。

  自定义标题

  侧边栏(小工具区域)

  自定义背景

  添加编辑器样式

  HTML5

  标题标签

  functions.php文件模版

  如果我们包含上面列出的所有函数,下面的代码这就是我们主题的functions.php的。

  /**

  *主题功能和定义

  *

  * package MyFirstTheme

  * since MyFirstTheme 1.0

  */

  /**

  *首先,工具主题设计和样式设置最大宽度,这将限制上传的文件大小和嵌入内容的宽度

  */

  if(!isset($content_width))

  $content_width=800;/pixels/

  if(!function_exists('myfirsttheme_setup')):

  /**

  *设置主题默认值,并注册一些WordPress功能

  *在init钩子之前设置这些函数非常重要,以确保这些功能不会失效

  */

  function myfirsttheme_setup(){

  /**

  *使主题可翻译,翻译文件在/languages/目录中

  */

  load_theme_textdomain('myfirsttheme',get_template_directory().'/languages');

  /**

  更多技术教程,请关注技术教程网www.jishujc.com