Woocommerce检查是否过滤产品

问题描述:

是否有条件功能或其他解决方案来检查产品目前是否被过滤?Woocommerce检查是否过滤产品

像这样将是巨大的:如果函数返回有源滤波器(或阵列)或假的数量

if(is_filtered()) echo 'Filters active'; 

惊人的那样。

感谢David钱德拉普尔纳马谁把我推在正确的方向是一个非常简单的功能使用方法:

function active_woocommerce_filters() { 

    global $_chosen_attributes; 

    return count($_chosen_attributes); 

} 

该函数返回有源滤波器的数量,以便它可以这样使用:

if(active_woocommerce_filters()) { 

    echo str_replace('%s', active_woocommerce_filters(), 'There are %s filters active'); 

} else { 

    echo 'There are no filters active'; 

} 
+0

这不工作对我来说与店面主题。我把函数放在functions.php中,并试图在其中一个模板文件中使用它。无论过滤器是否处于活动状态并在url中可见,它都会返回0。 –

+1

好的,我找到了解决方案 - 您可以使用'$ _chosen_attributes = WC_Query :: get_layered_nav_chosen_attributes();'而不是全局变量,这在我的情况下不存在。 –

+0

是的,你是对的。可能这在WC中已经改变 –

您可以使用global $_chosen_attributes; 进行检查WooCommerce仅在过滤器处于活动状态时显示“分层导航过滤器”。你可以检查代码“包括/部件/类-WC-部件 - 层状NAV-filters.php”:这里

global $_chosen_attributes; 

if (! is_post_type_archive('product') && ! is_tax(get_object_taxonomies('product'))) { 
    return; 
} 

// Price 
$min_price = isset($_GET['min_price']) ? esc_attr($_GET['min_price']) : 0; 
$max_price = isset($_GET['max_price']) ? esc_attr($_GET['max_price']) : 0; 

if (0 < count($_chosen_attributes) || 0 < $min_price || 0 < $max_price) { 
    /* Your Code Here. */ 
} 
+0

感谢队友,这就是我需要的 –