Woocommerce prüft, ob Produkte gefiltert werden

Lesezeit: 2 Minuten

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.

Benutzer-Avatar
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:

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. */
}

  • Danke Kumpel das ist was ich brauchte

    – GDY

    8. März 2016 um 8:53 Uhr

ist_gefiltert() ist eine in WooCommerce integrierte Funktion.

Es gibt „true“ zurück, wenn Produkte mithilfe von geschichteten Navigations- oder Preisschiebereglern gefiltert werden. Anwendungsfall hier

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

1131080cookie-checkWoocommerce prüft, ob Produkte gefiltert werden

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy