我应该在home.php中编写一个PHP函数吗?

时间:2015-08-30 作者:Alex

我正在努力学习WP主题开发。正如我所理解的,所有的“wp核心”函数都应该放在函数中。php。但是自定义函数呢?

假设我需要一个简单的函数在家里。php(例如:if/do something/else/do something)。正确的方法是什么?我可以把这个密码直接放在我家里吗。php。或者我应该在函数中编写一个函数。php,然后在家中调用它。php?还是有其他方法?

什么是“最佳实践”?

4 个回复
最合适的回答,由SO网友:leymannx 整理而成

冒着被其他认为这没问题的人否决的风险。我说:No, you shouldn\'t define functions in template files. 这应被视为不良做法。让我们看一下文档:

  1. Functions File Explained.
功能文件的行为类似于WordPress插件,为WordPress站点添加功能和特性。您可以使用它调用函数,包括PHP和内置WordPress,and to define your own functions. 通过向WordPress插件添加代码或通过WordPress主题函数文件,可以产生相同的结果。

  1. Pluginsoffer custom functions 和功能,以便每个用户都可以根据自己的特定需求定制自己的网站。

    1. Page Templates 具有呈现内容的目的—获取值,将其包装在标记中,完成。你会发现最大值有一些简单的条件。老实说,为了将来某一天可能不得不超过您的项目的任何其他开发人员,这真的应该是最大的。不要在模板文件本身内调整页面的功能。在我看来,它们应该尽量保持原样

      当您必须找到负责重写某些输出的代码时,也是如此。阅读以这种方式调整的模板文件真的很烦人。定义函数有位置。但它们都不应该是页面模板。

      当我必须决定是否调整模板时,我会问自己:

      它是在标记级别上吗?那就好了。例如,如果/否则将标题包装在<h1><h2> 如果is_front_page()TRUEFALSE. 或者通过对柱子进行加工来提供一些额外的包装。这将在模板文件中完成<div> 取决于路径。这可能是一个特殊的功能path_to_class() 逻辑发生的地方,然后我将其添加到标记中,如下所示<div class="<?php print path_to_class(); ?>">.<是的,即使像你建议的那样检查多个或复杂的条件也不应该在模板中完成。即使只是为了可读性。这也应该是一个在其他地方定义的函数,最后在如下条件下调用<?php if ( complex_condition() ) : ?><div ....

SO网友:Will

当然如果您的函数实际上只是进行一些控件切换,那么将其放入模板中就可以了。传统上,任何超出此范围的内容都会进入功能。php或类似产品。

Edit: +彼得·古森提到要保持干爽。事实上,使用WordPress主题很难保持事物干燥。我是圣人入门主题的粉丝。基于这一点和你今天的另一个问题,你可能想花点时间看看Sage,在一个地方看到一大堆(一些人认为的)WordPress主题化的最佳实践。Sage source codeSage Docs. 即使你最终没有使用它,也有很多好的想法可以学习。

SO网友:Pieter Goosen

没有错误或正确的方法,也没有任何类型的设置规则或标准说明自定义代码应该去哪里或不应该去哪里。

这都是个人喜好。您应该使用的指导原则很少(如果您愿意的话)

模板(和所有相关代码)应保持组织、可维护、易于阅读和理解。不要将代码拼凑在一起,也不要添加可能会使模板凌乱和不可读的长代码段

具有特定关系的代码应该分组在一起,我喜欢在这里使用自定义函数文件,比如分页函数pagination-functions.php. 将来,我知道我的分页功能将是pagination-functions.php. 另外,在代码中记下定义函数的位置,以便快速轻松地访问

保持模板文件干净且尽可能短。将代码分解为单独的模板文件和函数文件。这使得代码可以在需要时跨多个模板重用,这样您就不必重复。检查DRY Principle

正如我所说,这只是一个基本概念,如果你愿意,可以使用它。

SO网友:Mark Kaplun

在家中放置函数没有实际或理论问题。php,只要它们仅在该文件中使用。您可能也可以在其他上下文中使用它们,但这样会导致编码错误。

原则上,从两个不同模板文件调用的任何函数都应该在函数中。php(或包含在其中的文件中),其余的可以在特定的文件或函数中。php这是个人编码风格的问题。将所有函数放入函数中的优点。php是指,一旦发现其他文件中也需要它们,就不需要移动它们。

对于流控制代码,它更简单,将其放在模板文件中,并且不在函数中创建函数。php,除非它背后有一个非常复杂的逻辑,必须在其他模板文件中复制。原因是让阅读您代码的人有机会一次理解它,而无需打开其他文件并搜索它们。