WooCommerce: Filtern Sie Admin-Bestellungen nach Begriff des Produktattributs
Lesezeit: 5 Minuten
John Smith
Ich habe ein Geschäft mit vielen variablen Produkten. Alle Bestellungen werden speziell für den Kunden maßgefertigt. Das heißt, wenn wir das Produkt im Lager erhalten, müssen wir die Bestellung des spezifischen Produkts finden. Im Moment müssen wir die meisten Bestellungen einfach manuell überprüfen.
Was wir tun möchten, um uns wertvolle Zeit zu sparen, sind Suchaufträge nach benutzerdefinierten Attributbegriffen. Zum Beispiel: Wir verwenden das Attribut “Größe” für Sonderanfertigungen. Wir haben 24 „Größen“-Begriffe (z. B. „12 cm“, „16 cm“ usw.). Wir möchten die Bestellung basierend auf dem Größenbegriff finden. Zum Beispiel: Alle Bestellungen finden, deren Größe „48 cm“ ist.
Beyogen auf Erweiterte Suche in der Backend-Bestellliste für Produktartikel nach ID oder SKUhier mein Codeversuch:
Aber es hat nicht funktioniert. Jede Hilfe ist willkommen.
Du sagst custom made Sie geben jedoch die Größe an … Gibt es bei jedem Produkt etwas Einzigartiges?
– Fresz
17. Februar 2021 um 23:11 Uhr
Ich frage mich – ich habe gerade versucht, in meinem Geschäft nach Attributwerten zu suchen, es scheint korrekte Bestellungen zurückzugeben, sagen wir, wenn ich “schwarz” eingebe (benutzerdefiniertes Attribut für Farbe). Ich frage mich, ob “12cm” irgendwelche Ergebnisse für Sie liefert? nur als Stichwort in der Auftragssuche…
– Andrej Filonow
17. Februar 2021 um 23:48 Uhr
Sie da! ein Feedback zu der Antwort unten wird sehr geschätzt.
– LoicTheAztec
19. Februar 2021 um 18:02 Uhr
@LoicTheAztec – kannst du bitte auf meinen Kommentar zu deiner Antwort antworten? Vielen Dank!
– John Smith
22. Februar 2021 um 22:24 Uhr
Was Sie versuchen zu tun, kann in Ihrem Fall nicht wirklich funktionieren und es ist ein sehr schwerer Prozess, der den Administrator zum Absturz bringen oder Ihre gesamte Website verlangsamen kann.
Anstelle dessen, was Sie tun können, ist es, ein Dropdown-Menü mit all Ihren vorhandenen Größenwerten anzuzeigen, das Ihre Bestellungen filtert:
Beachten Sie, dass jede Produktattributtaxonomie mit beginnt pa_ + der Slug des Produktattributs. Ich habe im Code die Produktattribut-Taxonomie für “Size” gesetzt pa_size.
Zur Information verwendet der folgende Code eine sehr leichte benutzerdefinierte SQL-Abfrage.
// Custom function where metakeys / labels pairs are defined
function get_product_attribute_size_terms(){
$taxonomy = 'pa_size';
$options = array();
foreach ( get_terms( array('taxonomy' => 'pa_size' ) ) as $term ) {
$options[$term->slug] = $term->name;
}
return $options;
}
// Add a dropdown to filter orders by variations size
add_action( 'restrict_manage_posts', 'display_admin_shop_order_by_meta_filter' );
function display_admin_shop_order_by_meta_filter(){
global $pagenow, $typenow;
if( 'shop_order' === $typenow && 'edit.php' === $pagenow ) {
$domain = 'woocommerce';
$filter_id = 'by_size';
$current = isset($_GET[$filter_id])? $_GET[$filter_id] : '';
echo '<select name="'.$filter_id.'">
<option value="">' . __('Filter by Size…', $domain) . '</option>';
$options = get_product_attribute_size_terms();
foreach ( $options as $key => $label ) {
printf( '<option value="%s"%s>%s</option>', $key,
$key === $current ? '" selected="selected"' : '', $label );
}
echo '</select>';
}
}
add_action( 'pre_get_posts', 'process_admin_shop_order_product_type_filter' );
function process_admin_shop_order_product_type_filter( $query ) {
global $pagenow, $post_type, $wpdb;
$filter_id = 'by_size';
$taxonomy = 'pa_size';
if ( $query->is_admin && 'edit.php' === $pagenow && 'shop_order' === $post_type
&& isset( $_GET[$filter_id] ) && $_GET[$filter_id] != '' ) {
$attribute_taxonomy = 'attribute_'.$taxonomy;
$order_ids = $wpdb->get_col( $wpdb->prepare("
SELECT DISTINCT opl.order_id
FROM {$wpdb->prefix}wc_order_product_lookup opl
INNER JOIN {$wpdb->prefix}postmeta pm
ON opl.variation_id = pm.post_id
WHERE pm.meta_key = %s
AND pm.meta_value="%s"
", $attribute_taxonomy, esc_attr($_GET[$filter_id]) ) );
$query->set( 'post__in', count($order_ids) > 1 ? $order_ids : array(0) ); // Set queried order ids
$query->set( 'posts_per_page', 25 ); // Set "posts per page"
$query->set( 'paged', ( get_query_var('paged') ? get_query_var('paged') : 1 ) ); // Set "paged"
}
}
Der Code wird in die Datei functions.php des aktiven untergeordneten Designs (oder aktiven Designs) eingefügt. Getestet und funktioniert.
Verwandt: Filtern Sie Bestellungen nach Produkt-Post-Typ auf der Bestelllistenseite des WooCommerce-Adminbereichs
Nun, aus irgendeinem Grund scheint das nicht zu funktionieren. Jedes Mal werden alle Bestellungen mit keiner Übereinstimmung gefiltert. Ich habe es mit verschiedenen Attributen versucht, zB pa_size / pa_color. Kannst du es bitte nochmal überprüfen? Ich habe verschiedene Möglichkeiten ausprobiert, um dies zum Laufen zu bringen, aber es wird einfach alle Bestellungen filtern und keine anzeigen! Es ist wichtig zu beachten: Ich habe dies mit Bestellungen versucht, die zwei variable Produkte enthalten.
– John Smith
21. Februar 2021 um 21:42 Uhr
@JohnSmith Nicht 2 variable Produkte, sondern 2 Produktvariationen, da in Artikeln niemals ein variables Produkt enthalten ist, sondern stattdessen eine Produktvariation (von einem variablen Produkt).
– LoicTheAztec
21. Februar 2021 um 21:47 Uhr
Entschuldigung, mein Fehler. Ich meinte zwei Produktvarianten. Wenn also eine Bestellung Produkt B mit zwei verschiedenen Produktvariationen in der Bestellung enthält, werden keine Übereinstimmungen gefunden. Können Sie das bitte überprüfen? Vielen Dank!
– John Smith
21. Februar 2021 um 21:49 Uhr
Ich habe mich entschieden, dies jetzt mit einer Neuinstallation von WooCommerce zu versuchen, wobei ich mehrere Produktvariationen in meiner Bestellung verwende, und es wird nicht funktionieren. Wird immer keine zurückgeben.
– John Smith
21. Februar 2021 um 21:54 Uhr
In der drittletzten Zeile sollte nach Bestellungen gesucht werden, die größer als 0 und nicht 1 sind. Andernfalls werden keine Ergebnisse angezeigt, wenn nur eine Bestellung in der Liste den Kriterien entspricht.
– Ramez
9. Oktober 2021 um 0:01 Uhr
10101100cookie-checkWooCommerce: Filtern Sie Admin-Bestellungen nach Begriff des Produktattributsyes
Du sagst
custom made
Sie geben jedoch die Größe an … Gibt es bei jedem Produkt etwas Einzigartiges?– Fresz
17. Februar 2021 um 23:11 Uhr
Ich frage mich – ich habe gerade versucht, in meinem Geschäft nach Attributwerten zu suchen, es scheint korrekte Bestellungen zurückzugeben, sagen wir, wenn ich “schwarz” eingebe (benutzerdefiniertes Attribut für Farbe). Ich frage mich, ob “12cm” irgendwelche Ergebnisse für Sie liefert? nur als Stichwort in der Auftragssuche…
– Andrej Filonow
17. Februar 2021 um 23:48 Uhr
Sie da! ein Feedback zu der Antwort unten wird sehr geschätzt.
– LoicTheAztec
19. Februar 2021 um 18:02 Uhr
@LoicTheAztec – kannst du bitte auf meinen Kommentar zu deiner Antwort antworten? Vielen Dank!
– John Smith
22. Februar 2021 um 22:24 Uhr