WordPress主题函数

可以在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中的代码才会被执行。如果你的主题已经有了功能文件,那么你可以直接给他添加代码。如果不存在,你可以创建一个文件名为functions.php的纯文本文件到你的主题目录中。

子主题可以拥有它自己的functions.php文件。往子主题的功能文件中添加功能是修改父主题的安全方式。通过这种方式,当更新了父主题,你不必担心你新添加的功能会消失。

尽管子主题中functions.php在父主题functions.php之前被加载,但是并不覆盖它。子主题的functions.php可以用来扩充或代替父主题的功能。类似的,functions.php在插件加载后被加载。

使用functions.php,你可以:

  • 使用WordPress的钩子。例如:使用excerpt_length过滤式可以改变摘要的长度(默认是55个字)。
  • 使用add_theme_support()来启用WordPress的功能。例如:开启文章缩略图、文章版式以及导航菜单。
  • 定义要在多个主题模板文件中重用的函数。

如果在WordPress插件中调用和functions.php中相同的函数或者过滤器,结果是不可预测的,甚至会导致你的站点不可用。

例子

以下是你可以用在functions.php文件中支持不同功能的例子。如果你打算把主题提交到WordPress.org主题目录,以下的每一个例子都可以在你的主题中使用。

主题设置

当你的主题被激活的时候,许多主题功能都应该被包含在“setup”函数中。如下所述,每一个功能都可以添加到functions.php文件中,以激活WordPress的推荐功能。

使用主题名称来命名函数的命名空间是非常重要的。以下所有的例子都使用myfirsttheme_作为命名空间,这取决于你的主题名称。

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

注意:在上面的例子中,函数myfirsttheme_setup开始了但并没有被关闭。请确保在你的函数中关闭它。

自动feed链接

自动feed链接默认开启文章和评论的RSS feeds。这些feeds自动展现在<head>中。可以使用add_theme_support()来调用它们。

导航菜单

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

你可以在functions.php中设置多个菜单。可以使用register_nav_menus()来添加它们,然后使用wp_nav_menu()插入到主题中。如果你的主题允许多个菜单,那么你应该使用数组。尽管有一些主题没有自定义的导航菜单,但是推荐你开启此功能以方便自定义。

使用wp_nav_menu()调用你定义的菜单以及使用指定的名称(例如:primary)作为theme_location参数。

加载文本域

通过让你主题中的字符串是可供翻译的,主题可以被翻译成不同的语言版本。为了达到这个目的,你必须使用load_theme_textdomain()。更多关于主题翻译的内容,请阅读国际化章节。

文章缩略图

文章缩略图和特色图片允许用户选择一个图片来代表他们的文章。你的主题根据设计来决定如何展现它们。例如:你可以选择在存档视图显示每篇文章的缩略图。或者你想在首页使用大的特色图片。当然并不是所有的主题都需要特色图片,但建议您支持文章缩略图和特色图片。

文章版式

文章版式允许用户以不同的方式格式化它们的文章。这在允许博主根据文章的内容选择不同的版式和模板是非常有用的。你可以通过add_theme_support()来启用文章版式。建议使用如下设置:

初始化设置案例

下面的functions.php文件包括以上所有的功能。代码注释给出了清晰的解释。

在这个例子的最下面,你必须添加add_action()语句确保加载myfirsttheme_setup函数。

内容宽度

在functions.php文件中添加内容宽度可以确保没有内容破坏站点的容器。内容宽度为所有添加到站点的内容以及上传的图片设置了最大允许的宽度。下面的例子中,内容区域设置的最大值是800像素。没有比这更大的内容了。

其它功能

还有其它常用的功能可以包含在functions.php中。以下列出了最常用的功能。点击链接查看每一个功能的更多信息。

你的functions.php文件

如果你打算包含以上列出的所有功能,下面的functions.php可能这是你所需要的。

本文翻译自Theme Functions

相关文章

发表评论