如何将多个文件中的多个函数调用到WordPress页面模板中

时间:2016-09-23 作者:Atef Wagih

我正在尝试添加多个函数以在一些WordPress页面模板中显示自定义字段。这些函数用于显示插件的输出值Toolset Types, 然而,相同的原则应该适用于WordPress内置的自定义字段。

我可以使用如下代码在页面模板中成功显示输出:

<?php if (in_category( \'cars\' )) : ?>
<?php echo types_render_field("cars-specs", array( )); ?>
<?php endif;?>
然而,由于我需要插入多个函数,并且一些函数在多个页面模板之间是通用的,所以我考虑在子主题内创建一个文件夹并调用它functions-library.

然后我在这个文件夹中创建了一个名为cars-functions.php并在上面粘贴了代码。然后我转到页面模板并输入以下代码:

<?php include(\'/functions-library/cars-functions.php\');?>
但什么都没显示出来。

所以我在cars-functions.php 像这样:

<?php
function add_cars_specifications() {
 if (in_category( \'cars\' )) : [
 echo types_render_field("cars-specs", array( ));
 endif;
 }
add_action( \'init\', \'add_cars_specifications\' );
?>
然后在页面模板中粘贴以下代码:

<?php
include(\'/functions-library/cars-functions.php\');
get (add_cars_specifications());
?>
但还是什么都没有显示。

那么,将PHP函数传递到页面模板的最佳方式是什么呢?

此外,如果我有多个函数,是否最好将它们放在单独的文件中?或者这会导致性能问题?

我检查了此链接:https://stackoverflow.com/questions/921479/include-whole-content-of-a-file-and-echo-it但它处理的是将内容作为html输出而不是函数进行回显。

我还检查了此链接:https://stackoverflow.com/questions/8104998/how-can-call-function-of-one-php-file-from-another-php-file-and-pass-parameter-t但这一个处理传递要在目标文件中使用的参数。我只想在设计文件中显示这些值。

非常感谢您的支持。

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

只需将功能添加到主题functions.php 文件它们将可用于主题中的所有模板。

functions.php:

function add_cars_specifications() {
    if ( in_category( \'cars\' ) ) {
        echo types_render_field( \'cars-specs\', array() );
    }
}
在页面模板文件和主题中的其他模板中,add_cars_specifications() 将在范围内,因此如下所示:

<h3>Car Specifications</h3>
<?php add_cars_specifications(); ?>
<p>More text...</p>
您还可以包括来自functions.php 它们本身包含函数。这使得组织事情变得更容易。在…内functions.php:

require_once( get_template_directory() . \'/includes/template-tags.php\' ); 
如果确实要使包含仅在特定页面模板内部可用,可以从页面模板顶部包含外部文件,如下所示:

require_once( get_template_directory() . \'/includes/my-functions.php\' );
请记住,如果执行这样的include,则无法触发执行流中较早发生的操作和挂钩,因此,例如,尝试启动附加到init 钩子不起作用。

请注意get_template_directory() 用于父主题和get_stylesheet_directory() 用于儿童主题。