Sortieren Sie Produkte nach Marke und Titel in Woocommerce

Lesezeit: 2 Minuten

Sortieren Sie Produkte nach Marke und Titel in Woocommerce
Martin

In Woocommerce versuche ich gerade, die Voreinstellung zu ändern orderby in, um Produkte nach Marke und Titel sortiert anzuzeigen.

Die Marken werden über perfekte Woocommerce-Marken hergestellt. Ich habe es geschafft, die Bestellung gemäß der Markenschnecke zu erhalten (da ich so ihre Bestellung festgelegt habe). Ich verwende auch das Plugin WOOF (Woocommerce Products Filter), um nach Kategorie/Marke zu filtern.

Ich sortiere Produkte nach der Taxonomie wpb-brand und ich suche nach einer Möglichkeit, sekundär nach Produkttitel zu sortieren, aber ich weiß nicht, wie ich das machen kann.

Das ist mein Code:

add_filter('posts_clauses', 'posts_clauses_with_tax', 10, 2);
function posts_clauses_with_tax( $clauses, $wp_query ) {
global $wpdb;

$taxonomies = array('pwb-brand');

$orderBy['field'] = "pwb-brand";
$orderBy['direction'] = "ASC";

if( in_array($orderBy['field'], $taxonomies) ) {
    $clauses['join'] .= "
        LEFT OUTER JOIN {$wpdb->term_relationships} AS rel2 ON {$wpdb->posts}.ID = rel2.object_id
        LEFT OUTER JOIN {$wpdb->term_taxonomy} AS tax2 ON rel2.term_taxonomy_id = tax2.term_taxonomy_id
        LEFT OUTER JOIN {$wpdb->terms} USING (term_id)
    ";

    $clauses['where'] .= " AND (taxonomy = '".$orderBy['field']."' OR taxonomy IS NULL)";
    $clauses['groupby'] = "rel2.object_id";
    $clauses['orderby']  = "GROUP_CONCAT({$wpdb->terms}.slug ORDER BY slug ASC) ";
    $clauses['orderby'] .= ( 'ASC' == strtoupper( $orderBy['direction'] ) ) ? 'ASC' : 'DESC';
    return $clauses;
}
else {
    return $clauses;
}
}

Gibt es eine Möglichkeit, das Produktobjekt dazu zu bringen, ein zweites hinzuzufügen orderby Klausel?

Konnte das Problem lösen.

Es war so einfach wie das Auskommentieren der letzten ‘orderby’-Zeile, da es etwas redundant war, und das Abrufen der Posts-Tabelle über das Datenbankobjekt.

//$clauses['orderby'] .= ( 'ASC' == strtoupper( $orderBy['direction'] ) ) ? 'ASC' : 'DESC';
$clauses['orderby'] .= ", {$wpdb->posts}.post_title ASC"; 

  • Ich habe add_filter( ‘woocommerce_catalog_orderby’, ‘add_brand_sorting_option’) hinzugefügt; function add_brand_sorting_option( $options ){ $options[‘pwb-brand’] = ‘Nach Marke sortieren’; $optionen zurückgeben; }

    – Tejas Patel

    22. August 2020 um 12:24 Uhr


  • @TejasPatel Das sortiert die Produkte nicht wirklich. Es fügt nur die Option „Nach Marke sortieren“ nur in der Ansicht „Anpassen“ hinzu

    – Binod Kalathil

    26. August 2020 um 20:21 Uhr

.

784330cookie-checkSortieren Sie Produkte nach Marke und Titel in Woocommerce

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

Privacy policy