如何在WooCommerce的Single-Product.php上查看该产品是否属于某个类别?

时间:2012-12-12 作者:Alex

我该如何在单个产品上检查某个产品是否属于某个产品类别。php?

<?php if (is_product_category(\'audio\')) {
           echo \'In audio\';
               woocommerce_get_template_part( \'content\', \'single-product\' );

      } elseif (is_product_category(\'elektro\')) {

            echo \'In elektro\';
            woocommerce_get_template_part( \'content\', \'single-product\' );
         } else {
            echo \'some blabla\'; }  ?>
is_product_category(\'slug\') 不会对single-product.php. 我想得到上面的条件句。在单个产品页面上有解决方案吗?

5 个回复
最合适的回答,由SO网友:Justin Stern 整理而成

我不认为get_categories() 在这种情况下是最好的选择,因为它返回一个字符串,其中所有类别都列为锚定标记,很适合显示,但不适合在代码中确定类别是什么。好的,如果您还没有当前页面的product/post对象,那么首先需要抓取它:

global $post;
然后可以获取产品的产品类别术语对象(类别)。在这里,我将类别术语对象转换为一个名为$categories 因此,更容易看到分配了哪些段塞。请注意,这将返回分配给产品的所有类别,而不仅仅是当前页面的类别,即如果我们在/shop/audio/funzo/:

$terms = wp_get_post_terms( $post->ID, \'product_cat\' );
foreach ( $terms as $term ) $categories[] = $term->slug;
然后,我们只需检查列表中是否有类别:

if ( in_array( \'audio\', $categories ) ) {  // do something
总而言之:

<?php
global $post;
$terms = wp_get_post_terms( $post->ID, \'product_cat\' );
foreach ( $terms as $term ) $categories[] = $term->slug;

if ( in_array( \'audio\', $categories ) ) {
  echo \'In audio\';
  woocommerce_get_template_part( \'content\', \'single-product\' );
} elseif ( in_array( \'elektro\', $categories ) ) {
  echo \'In elektro\';
  woocommerce_get_template_part( \'content\', \'single-product\' );
} else {
  echo \'some blabla\';
}
希望这就是你想要的,并回答了你的问题。

SO网友:Milo

has_term 在这种情况下应起作用:

if ( has_term( \'audio\', \'product_cat\' ) ) {

       echo \'In audio\';
       woocommerce_get_template_part( \'content\', \'single-product\' );

} elseif ( has_term( \'elektro\', \'product_cat\' ) ) {

       echo \'In elektro\';
       woocommerce_get_template_part( \'content\', \'single-product\' );

} else {
       echo \'some blabla\';
}

SO网友:Koshensky

值得注意的是,您可以通过调用一个数组来查看选项列表,而不必通过大量的elseif检查来混乱代码,前提是您希望对每个类别执行相同的操作。

if( has_term( array( \'laptop\', \'fridge\', \'hats\', \'magic wand\' ), \'product_cat\' ) ) :

// Do stuff here

else :

// Do some other stuff

endif;

SO网友:tiadotdev

这很古老,但只是为了防止人们仍将WooThemes视为一个简单的解决方案:

if ( is_product() && has_term( \'your_category\', \'product_cat\' ) ) {
    //do code
}
*将“your\\u category”更改为您正在使用的任何内容。

以下是指向文档的链接:https://docs.woothemes.com/document/remov-product-content-based-on-category/

SO网友:Steve

我会考虑使用get_categories() WC\\U产品类的功能。

您可以找到指向文档的链接here.

基本上,在页面的循环中,调用函数返回与产品关联的类别。

结束

相关推荐

如何在自定义POST类型的查询中使用插件中的文件来替代single.php?

我正在使用自定义插件创建自定义帖子类型。自定义帖子类型的一个要求是在表格布局中显示,以便打印/发送电子邮件。对于这种情况,合理的解决方案似乎是在插件中包含一个特定的模板文件,该模板文件将用于单个自定义Post类型查询,而不是单个。php/索引。主题中提供的php。我如何使用插件中的文件替换单个插件。php/索引。php上的单一自定义post类型查询?提前谢谢你。