Woocommerce检查是否过滤产品

时间:2015-10-20 06:11:19

标签: wordpress woocommerce

是否有条件函数或其他解决方案来检查产品当前是否已过滤?

这样的事情会很棒:

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

如果函数返回活动过滤器(或数组)的数量或者为false,那就太棒了。

3 个答案:

答案 0 :(得分:2)

感谢大卫·钱德拉·普纳马(David Chandra Purnama)将我推向了正确的方向,这是一个非常简单的功能:

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';

}

答案 1 :(得分:1)

您可以使用global $_chosen_attributes;进行查询 WooCommerce“分层导航过滤器”仅在过滤器处于活动状态时显示。你可以查看代码“includes / widgets / class-wc-widget-layered-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. */
}

答案 2 :(得分:0)

is_filtered() 是 WooCommerce 的内置函数。

使用分层导航或价格滑块过滤产品时返回 true。 用例在这里

if ( is_filtered() ) {
   echo esc_html__('Some filters are active.', 'text-domain');
} else {
   echo esc_html__('No filters are active.', 'text-domain');
}