在模板中,我需要include_once
一个外部PHP(一个include.php
) 它包含我需要在模板中使用的函数。
这些函数包括CSS样式和外部JS脚本。
CSS位于include中的函数内。php。JS脚本也需要在该区域中。
所以我需要include_once("includes.php")
(位于主题的根文件夹中)。我想我会使用类似的代码:
add_action(\'wp_head\', \'fst_include\',20);
function fst_include() {
include_once get_stylesheet_directory(). "/includes.php"; // load required functions
return;
}
由于动作是“wp\\u head”,因此应该得到
include_once("includes.php")
头部区域。我使用
get_stylesheet_directory
因为包括。php文件将位于子主题中。
加载后,我可以添加一些CSS:
add_action(\'wp_head\', \'more_css\',30) // \'more_css\' is a function inside the includes.php file that contains some CSS
并添加一些JS
add_action(\'wp_head\', \'some_script\',30) // \'some_script\' is a function inside the includes.php file that adds some JS
我将最后两个add\\u操作的优先级设置为“30”,以便在include之后加载它们。php文件已加载。(因为includes.php的优先级为20。)
但其中包括。php文件似乎没有加载,因为“some\\u script”函数(包含在includes.php中)不可用,并导致错误。
所以我需要一种方法来添加include_once(\'includes.php\')
以便模板中的函数“稍后”可用。我不这么认为get_template_part
是适当的,因为include_once
需要在分区中。
Added - But Why?
为什么我需要这样做?“我的模板”显示表单。表单的代码和功能在include中。php文件。甚至表单也由include中的函数显示。php。
包括。php文件是一个包含函数、脚本和操作的“包”,在显示表单时,更改DOM元素以执行特定功能,用户填写表单并提交表单。(“包”是用于保护表单(如联系人表单)免受垃圾邮件机器人攻击的过程。这是一个有效的过程,但有点复杂。如果你真的感兴趣,你可以here 了解它。)
包括。php文件还构建为可在非WP页面上使用的独立/非WP代码。我不想维护两个版本的代码。
如果在WP网站上使用,该表单必须以任何主题的视觉外观“活”下来。我想模板是最好的方法。所以我需要得到我的收入。php“嵌入”模板,以便可以调用其函数。
至于add\\u操作中使用的优先级,这是为了确保包含。php文件包含在该区域中,因此我可以调用包含表单所用CSS的函数。如果包括。如果不先加载php,则CSS调用函数将失败。
最合适的回答,由SO网友:Rick Hellewell 整理而成
经过大量的实验,再加上谷歌的有限帮助,我想出了如何include
\' 模板中的外部函数文件。
关键是使用get_template_part
在模板的开头(模板标题之后)。该函数中指定的文件必须位于主题的根文件夹中,尽管我认为它也可能位于主题的模板文件夹中。
get_template_part(\'my_custom_functions\');
这将相当于\'
include
\' 在非WP PHP代码中。会的
include
\' 调用的文件
my_custom_functions.php
.
一旦这样做了,就可以使用过滤器在生成的页面的<head>
区域或您需要的任何其他过滤器,如:
add_filter(\'wp_head\',\'some_function\');
这将调用
some_function()
在您的
my_custom_functions.php
文件(当然,要确保函数名是唯一的。)
这个过程不容易通过谷歌找到,它将允许您“包含”一个文件,然后在WP模板中使用包含文件中的函数。