有可能分解一个functions.php文件吗?

时间:2017-05-18 23:11:57

标签: php wordpress

我目前正在开发一个WordPress网站,选择的购物平台是WooCommerce。

我想创建一系列模板文件,在content-product-single.php文件中调用,其中包含数学计算。出于某种原因,数学计算仅在放置在functions.php而不是我指定的模板文件时才起作用。有人建议我使用get_template_part标签的方式可能不正确。这是我正在使用的原始代码:

<?php
    if (is_product_category('category-name')) {
        get_template_part( 'templates/template-a' );
    }
    elseif (is_single('product-slug')) {
        get_template_part( 'templates/template-b' );  
    }
    elseif (is_single('product-slug')) {
        get_template_part( 'templates/template-c' );   
    }
?>

如果有人注意到我上面代码中的任何错误,那么请告诉我,因为这可能是问题但是目前我认为我的数学编码只能在functions文件中工作。< / p>

出于组织目的,我是否可以创建多个functions.php文件,或者这是不好的做法?我尝试了functions-template-file-name.php并将其置于主题的根目录中,但数学仍然不起作用。

2 个答案:

答案 0 :(得分:1)

functions.php(子目录inc内的文件)可以include这样的辅助文件:

include_once dirname(__FILE__) . '/inc/shortcodes.php';
include_once dirname(__FILE__) . '/inc/frontend.php';

functions.php(和包含的文件)上,你应该只添加钩子(过滤器和动作)及其各自的函数回调。

在模板文件(及其get_template_part s)上,您将保留HTML并最终调用一个主题函数,例如

<div class="results">
<?php my_get_results(); ?>
</div>

my_get_results()(在functions.php中)类似于:

function my_get_results(){
   $results = get_something();
   foreach($results as $r) {
        echo '<span>' . $r . '</span>';
    }
}

答案 1 :(得分:0)

function.php文件由Wordpress自动加载,但从那里你可以包含任意数量的php文件(在你的情况下,你的功能或计算代码文件)。

您可以添加以下文件:

require_once( __DIR__ . '/template/template-a.php');

PHP脚本相对于当前路径运行,而不是相对于自己文件的路径。使用 DIR 会强制模板相对于自己的路径发生。