Wordpress 检查是否过滤产品
是否有条件函数或其他解决方案来检查产品当前是否已过滤 像这样的东西会很棒:Wordpress 检查是否过滤产品,wordpress,woocommerce,Wordpress,Woocommerce,是否有条件函数或其他解决方案来检查产品当前是否已过滤 像这样的东西会很棒: if( is_filtered() ) echo 'Filters active'; 如果函数返回活动筛选器(或数组)的数量或false,则会令人惊讶。您可以使用global$\u selected\u属性进行检查 “分层导航过滤器”仅在过滤器处于活动状态时显示。您可以检查代码“includes/widgets/class wc widget layered nav filters.php”: global$\u选择\
if( is_filtered() ) echo 'Filters active';
如果函数返回活动筛选器(或数组)的数量或false,则会令人惊讶。您可以使用
global$\u selected\u属性进行检查代码>
“分层导航过滤器”仅在过滤器处于活动状态时显示。您可以检查代码“includes/widgets/class wc widget layered nav filters.php”:
global$\u选择\u属性;
如果(!is_post_type_archive('product')和&!is_tax(get_object_tax('product'))){
返回;
}
//价格
$min\u price=isset($u GET['min\u price'])?esc_attr($_GET['min_price']):0;
$max\u price=isset($u GET['max\u price'])?esc_attr($_GET['max_price']):0;
如果(0<计数($所选属性)| | 0<$最低价格| | 0<$最高价格){
/*你的代码在这里*/
}
感谢David Chandra Purnama将我推向了正确的方向,这里有一个非常简单的函数可以使用:
function active_woocommerce_filters() {
// for older WC versions
// global $_chosen_attributes;
$_chosen_attributes = WC_Query::get_layered_nav_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';
}
编辑:
正如Artur Czyżewski指出的那样,$\u selected\u attributes
全局变量在他的安装中不可用。这很可能是由于对WooCommerce的更改,可能会影响所有较新版本,因此我更新了上面的活动的\u WooCommerce\u过滤器。是\u过滤的()是WooCommerce的内置函数
当使用分层导航或价格滑块过滤产品时,返回true。
这里的用例
if ( is_filtered() ) {
echo esc_html__('Some filters are active.', 'text-domain');
} else {
echo esc_html__('No filters are active.', 'text-domain');
}
谢谢,伙计,这正是我所需要的。这对我来说不适合店面主题。我将函数放在functions.php中,并尝试在一个模板文件中使用它。无论过滤器是否处于活动状态且在url中可见,它都返回0。好的,我找到了解决方案-您可以使用$\u selected\u attributes=WC\u Query::get\u layered\u nav\u selected\u attributes()
而不是全局变量,全局变量在我的例子中并不存在。@ArturCzyżewski:我的答案很旧,可能WC中有些东西已经改变了。我将把它添加为编辑/注释
if ( is_filtered() ) {
echo esc_html__('Some filters are active.', 'text-domain');
} else {
echo esc_html__('No filters are active.', 'text-domain');
}