Gibt es eine Bedingungsfunktion oder eine andere Lösung, um zu überprüfen, ob die Produkte derzeit gefiltert werden?
So etwas wäre toll:
if( is_filtered() ) echo 'Filters active';
Erstaunlich wäre, wenn die Funktion die Anzahl der aktiven Filter (oder ein Array) oder false zurückgibt.
GDY
Dank David Chandra Purnama, der mich in die richtige Richtung gedrängt hat, ist hier eine sehr einfach zu verwendende Funktion:
function active_woocommerce_filters() {
// for older WC versions
// global $_chosen_attributes;
$_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes();
return count( $_chosen_attributes );
}
Die Funktion gibt die Anzahl der aktiven Filter zurück, sodass sie wie folgt verwendet werden kann:
if( active_woocommerce_filters() ) {
echo str_replace( '%s', active_woocommerce_filters(), 'There are %s filters active' );
} else {
echo 'There are no filters active';
}
BEARBEITEN:
Wie Artur Czyżewski betonte $_chosen_attributes globale Variable ist in seiner Installation nicht verfügbar. Dies ist höchstwahrscheinlich auf Änderungen an WooCommerce zurückzuführen und betrifft wahrscheinlich alle neueren Versionen, daher habe ich die aktualisiert active_woocommerce_filters Funktion oben.
Dies funktioniert bei mir nicht mit dem Storefront-Thema. Ich habe die Funktion in functions.php eingefügt und versucht, sie in einer der Vorlagendateien zu verwenden. Es gibt 0 zurück, egal ob Filter aktiv und in der URL sichtbar sind.
– Artur Czyżewski
7. November 2017 um 14:12 Uhr
OK, ich habe die Lösung gefunden – Sie können verwenden $_chosen_attributes = WC_Query::get_layered_nav_chosen_attributes(); anstelle der globalen Variablen, die in meinem Fall nicht vorhanden ist.
– Artur Czyżewski
7. November 2017 um 14:18 Uhr
@ArturCzyżewski: Meine Antwort ist ziemlich alt und wahrscheinlich haben sich einige Dinge in WC geändert. Ich werde das als Bearbeiten/Anmerkung hinzufügen
– GDY
26. Februar 2020 um 8:57 Uhr
Sie können mit überprüfen global $_chosen_attributes;
WooCommerce “Layered Nav Filters” wird nur angezeigt, wenn Filter aktiv sind. Sie können den Code “includes/widgets/class-wc-widget-layered-nav-filters.php” überprüfen: