我尝试根据类别对产品进行排序。
如果产品类别A和子类别对ASC进行排序
否则,如果产品类别B和子类别对DESC进行排序。
在functions.php中
add_filter('woocommerce_get_catalog_ordering_args', 'am_woocommerce_catalog_orderby');
function am_woocommerce_catalog_orderby( $args ) {
$args['meta_key'] = 'countdown_date';
$args['orderby'] = 'meta_value';
// need an if statement here to switch the order
$args['order'] = 'DESC';
return $args;
}
答案 0 :(得分:2)
您可以使用以下代码来解决您的目的,
add_filter('woocommerce_get_catalog_ordering_args','wdm_change_ordering',10,1);
function wdm_change_ordering($args)
{
if(is_product_category())
{
global $wp_query;
$cat = $wp_query->get_queried_object();
$category_A_term_id = 53;
$category_B_term_id = 2;
if(!empty($cat) && ($cat->term_id === $category_A_term_id || $cat->parent === $category_A_term_id))
{
$args['order'] = 'ASC';
}
elseif(!empty($cat) && ($cat->term_id === $category_B_term_id || $cat->parent === $category_B_term_id))
{
$args['order'] = 'DESC';
}
}
return $args;
}
记得改变,$ category_A_term_id& $ category_B_term_id变量值到相应的类别ID。
以上代码将检查,如果当前是类别存档页面,如果是,则类别' A'或者类别' A'的孩子,更改顺序,类似于类别' B'。
或者,您也可以使用以下WooCommerce条件
is_product_category( array( 'shirts', 'games' ) )
但是,这里必须指定所有类别。