页面模板中的PHP代码与函数

时间:2018-07-12 作者:tmdesigned

我创建了许多WordPress网站,并学习了我认为正确的PHP实践,即函数包含在函数中。php文件,几乎所有的函数。php应该包装在一个函数中,页面模板中可以包含直接的php,等等。

但我对“为什么”有点动摇。页面模板与函数文件的区别是什么,它们改变了每个模板中的工作方式和不工作方式?我假设这是装货订单,但如果您能提供更高级的指导/指示,我们将不胜感激。

编辑-好的,我确实了解它的“最佳实践”方面。功能应该是可重用的,等等。我在寻找更多的技术原因,什么时候/为什么它不工作。

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

尽管没有“官方”的答案,但这个问题仍然很受欢迎,因此一年后我将发表我对这个问题的坚定想法。

导致这个问题的是代码在某些地方工作的经验,而不是在其他地方。例如,为什么我必须在函数中的函数中包装代码。php,而不是将其松散地放在那里,而我能够将其松散地保存在模板文件中?感觉WordPress在不同的地方处理代码的方式有一些根本的不同。

当然,这并不准确。PHP就是PHP,WordPress正在一行一行地愉快地前进。

正如我在最初的问题中所写的那样,正如Krzysiek和其他人所确认的那样,主要的区别在于装载顺序。但是WordPress中的加载顺序就是一切。

主题的功能。相对而言,php很早就被加载了。它仍处于准备阶段。WordPress的关键功能已经就绪,如add\\u action(),以及插件和全局函数。但你还没有准备好开始做事。页面输出尚未写入,主循环未运行,等等。

因此,如果您在函数中放置一行松散的代码来“立即”执行某些操作。php,这可能太早了。相反,这里松散的代码行本质上应该是预备性的,即“稍后执行此操作”或“这是稍后使用的常量”,或者,正如文件名称所示,“这里有一个稍后运行的函数”

另一方面,模板文件运行相对较晚。WordPress目前正在加载过程中,它有足够的信息为用户的请求选择正确的模板文件。几乎任何松散的代码在这里都是有意义的,因为我们正接近周期的末尾。其他一切都已准备就绪,我们已经在构建我们的输出。

考虑到所有这些,事情开始成为焦点。为什么函数中出现语法错误。php会导致白屏死机,但模板文件中的语法错误会导致页面中途中断?因为功能。php是在任何输出之前运行的,所以在有任何东西显示之前,错误会破坏一切,但模板文件可能在输出的中途完成。

所以它确实可以归结为顺序,但比我最初想象的要深刻得多。

p、 在过去的一年里,帮助我更好地理解这一点的是:(a)更好地理解了通过使用xDebug逐步完成加载序列而获得的加载顺序,从字面上看事情是如何展开的,以及(b)更深入地理解了挂钩。由于加载顺序在WordPress中非常重要,因此挂钩系统至关重要。这就像是代码的时间旅行。

结束

相关推荐

Home.php中的小部件重定向到index.php

我注册了一个小部件,允许用户按类别筛选帖子或在搜索框中写些东西,问题是我的“博客”页面是“主页”。php“因为它是一个单页网站(在index.php中,我正在加载所有内容),当我选择一个类别或单击搜索按钮时,它会重定向到索引。php,而不是留在家里。php。我怎样才能改变这种行为?