如何从当前 WooCommerce 产品类别中获取所有产品?
How to get all products from current WooCommerce product category?
自定义我的 archive-product.php
。如何在自定义循环中仅显示特定类别中的产品? This similar question, didn't solve my problem. I tried single_cat_title()
to get the current category based on this question but got an error. I think I need to use get_queried_object()
based on this documentation 但我总是出错。
我试过这个:
<?php
$category = single_cat_title('', false); // this returns your current category ?>
<?php
// Setup your custom query
$args = array(
'post_type' => 'product',
'product_cat' => $category,
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_post_thumbnail(); ?>
<br>
<?php endwhile; wp_reset_query(); // Remember to reset ?>
我也试过:
`$term_name = get_queried_object()->name;`
// Setup your custom query
$args = array(
'post_type' => 'product',
'product_cat' => $term_name, );
已更新
在产品类别存档页面上,要获取当前产品类别术语,您将使用:
- Wordpress function
get_queried_object()
(获取 WP_Term 对象).
- 或Wordpress function
get_queried_object_id()
(获取词条Id).
自 WordPress 3.1 以来,不推荐在 WP_Query 中直接使用分类法参数。相反,您将使用 税务查询,如下所示:
<?php
// Get The queried object ( a WP_Term or a WP_Post Object)
$term = get_queried_object();
// To be sure that is a WP_Term Object to avoid errors
if( is_a($term, 'WP_Term') ) :
// Setup your custom query
$loop = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'publish',
'tax_query' => array( array(
'taxonomy' => 'product_cat', // The taxonomy name
'field' => 'term_id', // Type of field ('term_id', 'slug', 'name' or 'term_taxonomy_id')
'terms' => $term->term_id, // can be an integer, a string or an array
) ),
) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post();
echo '<div style="margin:8px; text-align:center;">
<a href="'.get_the_permalink().'">';
the_post_thumbnail();
the_title();
echo '</a></div>';
endwhile;
wp_reset_postdata(); // Remember to reset
endif; endif;
?>
已测试并有效。
自定义我的 archive-product.php
。如何在自定义循环中仅显示特定类别中的产品? This similar question, didn't solve my problem. I tried single_cat_title()
to get the current category based on this question but got an error. I think I need to use get_queried_object()
based on this documentation 但我总是出错。
我试过这个:
<?php
$category = single_cat_title('', false); // this returns your current category ?>
<?php
// Setup your custom query
$args = array(
'post_type' => 'product',
'product_cat' => $category,
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php the_post_thumbnail(); ?>
<br>
<?php endwhile; wp_reset_query(); // Remember to reset ?>
我也试过:
`$term_name = get_queried_object()->name;`
// Setup your custom query
$args = array(
'post_type' => 'product',
'product_cat' => $term_name, );
已更新
在产品类别存档页面上,要获取当前产品类别术语,您将使用:
- Wordpress function
get_queried_object()
(获取 WP_Term 对象). - 或Wordpress function
get_queried_object_id()
(获取词条Id).
自 WordPress 3.1 以来,不推荐在 WP_Query 中直接使用分类法参数。相反,您将使用 税务查询,如下所示:
<?php
// Get The queried object ( a WP_Term or a WP_Post Object)
$term = get_queried_object();
// To be sure that is a WP_Term Object to avoid errors
if( is_a($term, 'WP_Term') ) :
// Setup your custom query
$loop = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => -1,
'post_status' => 'publish',
'tax_query' => array( array(
'taxonomy' => 'product_cat', // The taxonomy name
'field' => 'term_id', // Type of field ('term_id', 'slug', 'name' or 'term_taxonomy_id')
'terms' => $term->term_id, // can be an integer, a string or an array
) ),
) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post();
echo '<div style="margin:8px; text-align:center;">
<a href="'.get_the_permalink().'">';
the_post_thumbnail();
the_title();
echo '</a></div>';
endwhile;
wp_reset_postdata(); // Remember to reset
endif; endif;
?>
已测试并有效。