WordPress函数的最终指南.PHP文件

如果您已开始构建自己的主题,或者甚至创建子主题以自定义另一个主题,那么您将学习所有关于模板文件和主题模板层次结构.但是主题函数.php 文件?

函数文件是您将所有功能的主题需要与一个模板相关联的主题需要,因此在页面中只输出一个类型的内容或内容而导致的代码作为侧边栏或页脚.

wordpress codex定义如下所示文件:

函数文件的行为类似于WordPress插件,将功能和功能添加到WordPress站点.您可以使用它来调用PHP和内置WordPress的功能,并定义自己的功能.您可以通过将代码添加到WordPress插件或通过WordPress主题功能文件来生成相同的结果.

重要的是要注意函数文件和插件文件之间的相似性.您将函数文件用于同一类型的代码,您将添加到插件;实际上,如果你想,你可以拥有一个巨大的函数文件,并且根本没有插件.

但这不是一个非常好的主意.

如果您有很多功能代码,则需要在您的网站中使用,或者如果更改主题,则希望该代码仍然可以工作,然后您应该将其放在插件中.但是如果该代码依赖于主题,则函数.php 是正确的位置.一般规则是:

使用 function.php 需要添加与所显示内容的方式相关的简单功能(即,如果没有主题激活,它不会工作).这可能包括添加额外的字体,例如.

中写一个插件时,功能更复杂或额外的功能不依赖于主题.一个例子是注册帖子类型-如果在将来更改主题,您不希望丢失帖子类型.

在此帖子中,我将带您完成函数的一些用途.php ,并告诉您如何为它添加代码以及如何激活该代码.我还将在子主题中向您展示如何在子主题中使用 clusers.php 来覆盖或向父主题添加功能.

我们将介绍:

  • 函数文件的常见用途
  • 向功能文件添加代码并激活它
  • 创建函数文件
  • 将常用代码添加到函数.php

    • 添加主题支持
    • 添加翻译文件
    • 注册导航菜单
    • 将其拉在一起

  • 包括文件
  • 与父母和儿童主题合作

    • 可插拔功能
    • 取消激活函数
    • 使用函数优先级

  • 函数文件是您的朋友

函数文件的常用用途

请记住,功能文件是针对主题所依赖的代码(即,如果在切换主题时将丢失),在将代码添加到它特别有用时存在一些特定的示例.这些包括:

  • 添加主题支持,例如特色图像,帖子格式和RSS链接
  • 告诉wordpress主题的翻译文件
  • 注册导航菜单的位置,使用户可以通过菜单管理屏幕添加菜单
  • 使用子主题从父主题添加,删除或覆盖功能.

在这篇文章中,我会告诉你如何完成这些事情.

向函数文件添加代码并激活它

您将代码添加到函数文件,并告诉WordPress以与插件的完全相同的方式激活它.方法包括:

  • 编写一个函数,然后在主题模板文件中调用它-当您想要在主题上的多个地方使用时,这很有用,但它不会在模板部分中工作.
  • 将函数挂钩到动作或过滤器挂钩.当WordPress遇到该挂钩时,这运行了该函数.WordPress本身提供了数百个钩子,您可能会发现您可以使用的主题和插件中的一些.请记住,如果您在函数中编写某些内容,则要通过钩子在您从WordPress插件目录中购买或下载的主题中通过钩子激活,那么您需要创建一个孩子主题要这样做.如果您没有您的函数文件,下次更新主题时将被覆盖.
  • 创建一个快捷码,然后您添加到内容.我不建议通过函数文件添加短代码-最好使用插件进行这样做,从而在将来切换主题时,该短码的内容输出不会丢失.,它也意味着您可以使用该插件在其他网站上,您可以再次访问您的短码.
  • 创建小部件.在函数文件中执行此操作是不好的练习;如果要构建窗口小部件,请为其创建一个插件.

您可以在我们的指南中找到如何创建插件.

所以让我们看看你如何使用 clusers.php ,以及如何为其添加一些最常见的功能.

创建函数文件

如果您的主题没有函数文件,则需要创建一个.在主题的主目录中创建一个新文件,并调用它函数.php .

您必须向文件添加一个打开的php标记,但您不需要关闭一个:

加载GIST 1C9DB3673E9A82CDFB72.

您的函数文件现在已准备好添加您的代码.我倾向于在每个部分之前添加大块注释的文字,所以我可以轻松再次找到我的代码.这样的东西:

加载GIST 1C9DB3673E9A82CDFB72

那样,当我扫描我的文件时,我可以轻松找到每个代码块.

将常用代码添加到 clusers.php

让我们来看看函数文件的一些最常见的用途,以及如何代码它们.

添加主题支持

WordPress中有某些功能,您必须为您的主题添加主题支持,以便能够利用它们.这些是:

  • 帖格格式- Tumblr的格式,如标准,视频,报价和抛开
  • 后缩略图-也称为特色图像.如果您想在主题中显示这些主题,您也必须添加代码以将它们输出到模板文件,但除非您为它们添加主题支持,否则不会在管理员屏幕中使用它们
  • 自定义背景-允许您(或使用您的主题的其他人)通过自定义程序
  • 自定义背景图像和颜色

  • 一个自定义标题-以与自定义背景相似的方式工作
  • 自动馈送链接-对于RSS源
  • html5 -用于搜索表单,评论,图库等于使用HTML5对您编写主题的能力,但与WordPress
  • 生成的代码有关
  • 标题标记-这允许您在页面的<head>中添加标题标记以进行SEO和可访问性目的.如果您有一个SEO插件,您将不需要这个,为您执行此操作

以便为邮寄格式添加主题支持,例如,您在函数中使用add_theme_support()函数文件:

加载GIST 1C9DB3673E9A82CDFB72

您添加主题支持的一些功能;例如,您可以在为它们添加支持时指定要使用的帖子格式:

加载GIST 1C9DB3673E9A82CDFB72

和特色图像,您可以指定要为其添加的哪些帖子类型为:

加载GIST 1C9DB3673E9A82CDFB72

但这都不会有工作,除非您将代码放在一个函数内,然后将代码置于附加到正确的钩子中,这是after_setup_theme操作挂钩.您可以在一个较大的函数内添加所有add_theme_support()函数,然后挂钩after_setup_theme.因此,如果要为发布缩略图,邮寄格式,HTML5和自动馈送链接添加主题支持,请将其添加到您的函数文件中:

加载GIST 1C9DB3673E9A82CDFB72.
请注意,我已添加注释的文本上面的每个项目,所以我添加了主题支持,所以如果我或其他人稍后回到文件,那将很容易看出发生了什么.

添加翻译文件

如果没有说话的人可能会在您的网站上工作或使用您的主题,使您的主题换算就是良好的做法.这不会影响访问者看到的网站的前端,但您的用户将看到的管理员屏幕.翻译意味着您通过主题添加到管理员屏幕的任何文本都将使用翻译文件翻译.

你告诉WordPress在函数文件中使用load_theme_textdomain()函数的主题的翻译文件,如:

加载GIST 1C9DB3673E9A82CDFB72

这将使用get_template_directory()函数来查找主题的目录,然后在语言子目录中查找以wpmu-theme开头的文件,因此路径将是wp-content/themes/mytheme/languages/,语言文件的文件名将开始wpmu-theme后跟语言的代码.

如果您确实需要使您的主题翻译-准备就绪,您必须做的不仅仅是加载此文本域-我们翻译插件的全面指南也适用于主题,并告诉您您需要知道的一切.

注册导航菜单

您在函数文件中所做的其他东西是导航菜单的注册位置.如果您习惯于使用第三方主题,您将看到其中许多人都有主要导航复选框,您可以在菜单管理屏幕中选择,让您添加您创建的菜单这个位置在主题.如果您希望用户能够在主题中执行此操作,那么您需要使用register nav menus()功能:

加载GIST 1C9DB3673E9A82CDFB72.

此注册一个菜单位置,将在管理屏幕中显示为主导航,且其ID是主要的.然后,您使用该ID输出主题标题中的菜单.

请注意,我在上面的代码中提出了我的菜单翻译的名称,所以任何使用我的主题的人都使用英语以外的语言工作将具有使用我的翻译为他们翻译的"主要导航"文本文件.

您还可以使用此功能注册多个导航菜单位置.下面的代码寄存在主菜单中,加上侧边栏中的另一个:

加载GIST 1C9DB3673E9A82CDFB72

再次,您需要使用wp_nav_menu()函数将菜单编码为主题的sidebar.php文件.

将其拉到一起

您中间的鹰眼将发现我上面提供的所有功能都通过相同的动作钩激活:after_setup_theme.这意味着代替编写多个单独的函数,您可以将它们全部添加到函数中的一个函数.php 文件,然后使用动作钩激活它.

你会有一个大功能:

加载GIST 1C9DB3673E9A82CDFB72

我在我的功能里增加了大量的评论,所以我知道正在发生什么.如果我需要在将来编辑或覆盖功能,这将使这使其更容易.

包括文件

有时你会发现你的函数文件比你可以舒服地管理的函数更大,并且有一个代码块,您希望单独保持.如果发生这种情况,它是一个很好的想法,可以为该代码创建一个名为inde文件的单独文件,然后从函数文件调用它们.

在称为includes的主题中创建一个文件夹,然后为要分隔的每个代码块创建一个新的PHP文件.因此,如果我想将主题设置移动到另一个文件,请将上面的所有代码移动到一个名为theme_setup.php的文件中,然后在我的函数文件中调用它:

加载GIST 1C9DB3673E9A82CDFB72

这调用包含文件中的代码并将其运行在函数文件中,其中我添加了include()函数.我倾向于将所有包括在函数文件的开头中的所有内容,因此他们很容易找到,再次点击评论告诉我他们所做的事情.

使用父和子主题

当您使用父母和子主题时,函数文件可能非常强大.在子主题中,您可以使用函数文件覆盖或从父主题中删除函数或添加您自己的新功能.

有三种方法可以在子主题中覆盖或添加函数:

  • 创建一个可插拔功能的新版本.
  • 从父主题中取消激活函数.
  • 添加自己的函数,使用优先级来覆盖父主题的函数.

让我们依次快速看看这些中的每一个.

可插拔功能

如果您正在使用良好编码的父主题或旨在用作父主题的主题框架,那么机会是其功能文件中的功能将可插拔.

您可以轻松地发现可插拔主题,因为它将被包裹在条件标签中以检查该功能是否已存在,如下所示:

加载GIST 1C9DB3673E9A82CDFB72

因为来自子主题的函数在从父主题中运行,这意味着如果您在子主题中创建具有相同名称的函数,则WordPress不会从父主题运行一个.所以要覆盖父主题,只需在子主题函数文件中使用相同的函数创建自己的函数.

取消激活函数

要取消激活函数,请从其附加到的操作或过滤器挂钩中拔掉它.因此,如果您的父主题有一个名为parent_function()的函数,它通过init钩子激活,则您可以在您的子主题中取消激活它:

加载GIST 1C9DB3673E9A82CDFB72.

这意味着父函数不会再运行.然后,如果您希望将子主题中的不同功能-将其连接到同一钩子,但是 not 给它相同的名称,则可以编写一个新功能.

注意:如果父函数在add_action()函数中具有优先级参数,则运行要停用的函数的函数,则必须在停用时包含相同的优先级.我将在下一节中来到优先事项.

使用函数优先级

最终选项是创建一个具有比要覆盖的功能更高的优先级的新功能,这意味着它将在该函数之后运行.您必须这样做,因为默认wordpress将首先从孩子主题运行函数;只有添加优先级编号,您可以更改此问题.

所以让我们说你的父主题有一个名为parent_function()的函数,它通过init钩子激活,优先级20:

加载GIST 1C9DB3673E9A82CDFB72

您可以编写一个覆盖它的函数,然后将其附加到具有更高优先级的init钩子,例如30:

加载GIST 1C9DB3673E9A82CDFB72

注意,如果父函数没有分配优先级,那么它将使用默认值为10.因此您可以使用更高于10的任何更高于10的子功能,以确保它在父功能之后运行.

函数文件是您的朋友

主题功能文件以非常相似的方式与插件一起工作,但它特定于您的主题.因此,如果您稍后切换主题,则只能使用它来添加您不想丢失的功能,或者您不想在另一个站点上使用.在此帖子中,您已经了解了函数文件的用途以及如何实现其中一些使用.用小心处理函数文件,避免使用它而不是插件,它将帮助您解决主题开发!

3

发表回复