<?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上属于某个产品类别?对single-product.php的影响。我想有较高的条件。在单一产品页面上对此有任何解决方案吗?
#1 楼
在这种情况下,我认为get_categories()
并不是您的最佳选择,因为它返回一个字符串,其中所有类别均列为锚标记,适合显示,但不适用于在代码中找出类别。好的,所以您需要做的第一件事就是获取当前页面的产品/帖子对象(如果尚未使用的话):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';
}
希望这就是您想要的,并回答了您的问题。
#2 楼
在这种情况下,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';
}
评论
超级简单有效的方法来做到这一点。我认为这是更好的答案。
–特雷弗
17年5月25日在2:57
我喜欢这个,因为它很短。但是我做了{返回;}
– Eoin
18年1月31日在21:49
#3 楼
值得注意的是,假设您想对每个类别都执行相同的操作,则可以通过调用数组来遍历选项列表,而不必通过大量的elseif检查使代码混乱。if( has_term( array( 'laptop', 'fridge', 'hats', 'magic wand' ), 'product_cat' ) ) :
// Do stuff here
else :
// Do some other stuff
endif;
评论
我认为应该将此答案作为编辑添加到Milo的答案中。
– cybmeta
15年2月18日在16:41
#4 楼
这很古老,但以防万一人们仍然将WooThemes作为一种简单的解决方案: br />这里是文档的链接:https://docs.woothemes.com/document/remov-product-content-based-on-category/#5 楼
我将使用WC_Product类的get_categories()
函数。您可以在此处找到文档的链接。
基本上在页面循环中调用该函数返回与产品关联的类别。
评论
我无法对此进行编码。我不知道如何使它工作。有人请说明一下。我尽力了。我应该用get_categories()代替它吗?
– Alex
2012-12-13在16:04
如果您位于产品类别页面上,则@Alex is_product_category()函数将返回TRUE。不是产品类别。我现在正在处理一个项目,但是稍后我将尝试为您提供一个代码片段。
–史蒂夫
2012-12-13 17:55
谢谢,史蒂文(Steven)花时间编码这个小片段。非常感谢。
– Alex
2012-12-13 17:56
评论
可能是因为您的第一个语句缺少结尾)吗?应该是if(is_product_category('audio'))不错,但是不是。 is_product_category似乎不适用于single-product.php