我想在一个类别存档页面上显示“缺货”商品:“已售商品”。
所有其他类别都需要隐藏其缺货商品。
WC 设置中的“从目录中隐藏缺货项目”未勾选。
我有以下代码,它成功隐藏了缺货商品,但我无法让 has_term() 函数正常工作并过滤掉“已售商品”页面。
我相信这可能是因为我正在使用“pre_get_posts”,并且可能在添加“Sold Items”术语之前触发。
哪个是最好的行动?还是我需要把它分成两个钩子?
add_action( 'pre_get_posts', 'VG_hide_out_of_stock_products' );
function VG_hide_out_of_stock_products( $q ) {
if ( ! $q->is_main_query() || is_admin() ) {
return;
}
global $post;
if ( !has_term( 'Sold Items', 'product_cat', $post->ID ) ) {
if ( $outofstock_term = get_term_by( 'name', 'outofstock', 'product_visibility' ) ) {
$tax_query = (array) $q->get('tax_query');
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'term_taxonomy_id',
'terms' => array( $outofstock_term->term_taxonomy_id ),
'operator' => 'NOT IN'
);
$q->set( 'tax_query', $tax_query );
}
}
}