加载特定分类的特定函数文件

时间:2021-05-16 作者:iamonstage

我已将所有函数拆分为单独的文件,并从函数中加载这些文件。php使用以下内容:

require get_template_directory() . \'/inc/bhh-functions/scripts-styles.php\';
require get_template_directory() . \'/inc/bhh-functions/user-functions.php\';
然而,我现在有一个函数文件,我只想在某个分类页面上加载它。我尝试了以下方法和其他方法,但没有成功。

if (has_term(\'16\', \'product_cat\', )) {
  require get_template_directory() . \'/inc/bhh-functions/tax-functions.php\';
}

2 个回复
SO网友:Antti Koskinen

我认为你的代码有三个方面。

第一个是将数字字符串作为第一个参数传递给has_term(). 如果试图将术语ID传递给函数,则应删除“16”中的引号,只传递16,即作为整数传递。https://developer.wordpress.org/reference/functions/has_term/

第二个是你正在使用has_term() 加载到某个分类页面。该函数用于检查帖子是否有特定的术语,而不是查询是否用于分类页面。您应该使用is_tax( $taxonomy, $term) 相反https://developer.wordpress.org/reference/functions/is_tax/

第三件事是直接对函数进行条件检查。php文件。由于加载和动作触发顺序,检查发生得太早。将检查包装在回调函数中,并将其附加到template_redirect 行动挂钩。当动作发生时,WP已经自行设置好,条件函数具有必要的数据进行检查。https://codex.wordpress.org/Plugin_API/Action_Reference

SO网友:iamonstage
add_action(\'template_redirect\', \'bhh_single_product_functions\', 10);

function bhh_single_product_functions()
{
    if (has_term(16, \'product_cat\',)) {
        require get_template_directory() . \'/inc/bhh-functions/single-product-category-x.php\';
    }
}

相关推荐