2017-03-10 2 views
3

Also habe ich mich auf der Suche nach einer Möglichkeit, dies zu integrieren, ohne ein weiteres Plugin installieren, die viel mehr als ich brauche.WooCommerce Admin Produktsuche nach SKU

Nehmen wir an, unsere Produkt-SKUs sind so strukturiert, dass sie die Lieferantennummer, einen Bindestrich (-) und dann die Produkt-ID enthalten. So sehen unsere SKUs wie folgt aus: 469-852369 (Hersteller-Produkt). Die Hersteller-ID kann zwischen 1 und 5 Ziffern und die Produkt-ID zwischen 1 und 10 Ziffern enthalten. Wir möchten nach dem Produkt suchen können, ohne den Bindestrich (-) hinzufügen zu müssen. Also für 469-852369 möchte ich nur 469852369 eingeben können und das Produkt erscheint.

Ich weiß, dass es eine Menge von Plugins gibt, die das tun werden, aber ich möchte kein Plugin nur hinzufügen, um dieses eine Problem zu erreichen. Jede Hilfe und Anleitung, wie dies über PHP zu erreichen wäre, würde helfen.

Ich bin ein Anfänger mit mir so blank, Danke

Antwort

4

Sie können Ihre benutzerdefinierte Abfrage gesetzt Ergebnis zu suchen. Bei der normalen Suche mit "469852369" können Sie "-" nach 3 Ziffern wie "469-852369" anhängen und dann in die WordPress-Abfrage eingeben, um Ergebnisse zu erhalten.

function get_product_by_sku($sku) { 

    global $wpdb; 

    $sku = implode("-", str_split($sku, 3)); 

    $product_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku)); 

    if ($product_id) return new WC_Product($product_id); 

    // YOUR CODE 

    return null; 

} 

Hoffe, dass dies für Sie irgendwie hilfreich sein wird.

Danke.

1

Ich denke, man könnte die SQL-Abfrage in Ahmed Ginani Antwort mit diesem ersetzen und bekommen, was Sie wollen:

SELECT post_id FROM $wpdb->postmeta WHERE (REPLACE(meta_value, '-', '')) = '%s' AND meta_key='_sku'; 
-2

verwenden Sie den Code:

function get_product_by_sku($sku) { 
    global $wpdb; 
    $product_id = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku)); 
    if ($product_id) return new WC_Product($product_id); 
    return null; 
} 
Verwandte Themen