如果WooCommerce中的产品包含标签,则需要_once()

时间:2021-10-14 作者:Jannickla

我试着require_once() 如果满足特定标签的条件,则在woocommerce单一产品页面上显示一个文件。

我已将以下内容添加到functions.php

if(has_term(\'xyz\', \'product_tag\')){
    require_once WP_CONTENT_DIR . \'/path/file.php\';
}
它不会加载我的文件,但如果我将其从我的状态中取出,它会加载。

我能做些什么来实现这个逻辑?

2 个回复
最合适的回答,由SO网友:Andrea Somovigo 整理而成

has_term() 是一个模板函数,因此如果直接在函数中使用它,它将不起作用。在知道当前对象是否是产品页面之前加载的php。所以如果你在functions.php 你可以做:

add_action(\'template_redirect\',\'my_inclusion_function\');
function my_inclusion_function(){
  if(is_product() && has_term(\'xyz\', \'product_tag\')){
    require_once( WP_CONTENT_DIR.\'/path/file.php\');
  }
}
is_product() 检查您是否在单个产品中,然后检查该产品是否有标记xyz

如果包含具有布局含义,例如打印附加信息等,那么这种方法并不理想,因为包含发生在内容jsut的最开始,在<body> 标签打开。在这种情况下,您可以只修改单个产品。php模板文件(如tiago calado)

您还可以在单产品页面检查中使用一个可用的挂钩this useful resource 并直接在函数中使用它。php。最后一种方法的优点是,在将来切换主题时,您不必查看布局页面。

SO网友:tiago calado

require\\u once是一个函数,请尝试这种方式。

if(has_term(\'xyz\', \'product_tag\')){
    require_once( WP_CONTENT_DIR.\'/path/file.php\');
}
函数中还需要\\u once()。php,不知道该说什么。如果上述代码的工作是预期的,请给出反馈。