我正在尝试添加多个函数以在一些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但这一个处理传递要在目标文件中使用的参数。我只想在设计文件中显示这些值。
非常感谢您的支持。
最合适的回答,由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()
用于儿童主题。