2015-08-23 4 views
5

Ich verwende derzeit WP All Import, um Daten zu importieren (speziell Lagermenge). Wenn ich die Bestandsmenge importiere, überschreibt sie meine aktuellen Daten, und was ich dafür tun möchte, ist Daten zu aktualisieren. Nehmen wir an, WooCommerce hatte 5 und mein CSV-Blatt hat 5, ich möchte, dass diese beiden Werte addiert werden (gleich 10).WP All Import stock ovewitte

Ich habe E-Mail WP Alle Import Unterstützung einige Hinweise darüber zu geben, was erforderlich war, das oben zu arbeiten, zu bekommen und hier ist sie:

„Wenn Sie mit dem Code gut sind, können Sie diese Arbeit mit einem benutzerdefinierten machen Nachbearbeitungsfunktion: Importieren Sie einfach Ihren Bestandswert in ein benutzerdefiniertes Platzhalterfeld und dann über eine Funktion, die an die Aktion "pmxi_saved_post" angehängt ist, greifen Sie sowohl auf das tatsächliche benutzerdefinierte Lagerfeld als auch auf den Platzhalter zu Lager http://www.wpallimport.com/documentation/developers/action-reference/ ";

Ich habe keine Ahnung, wo ich anfangen soll. Irgendwelche Eingaben würden es begrüßen.

Antwort

1

Die Lösung ist direkt vor Ihrem.

Ansatz:

  • Fügen Sie die unten Funktion in der functions.php-Datei des Themas

    add_action ('pmxi_saved_post', 'wdm_post_saved', 10, 1);

    Funktion wdm_post_saved ($ id) {

    $ original_stock = get_post_meta ($ id '_stock', true); $ new_stock = get_post_meta ($ id, '_custom_stock_placeholder', true);

    $ combined_stock = $ original_stock + $ new_stock

    update_post_meta ($ id '_stock', $ combined_stock);

    }

  • weitere hinzufügen benutzerdefiniertes Feld von Armaturenbrett oder bei der Verwendung von WP ALL IMPORT sagen '_custom_stock_placeholder' zu den Produkten.

  • Wenn Sie WP ALL IMPORT verwenden, weisen Sie den neuen Bestandswert dem oben genannten benutzerdefinierten Feld und nicht dem ursprünglichen Feld _stock zu.

Rest der Funktion wird berechnen und tun das Nötige für Sie.

+0

Vielen Dank für Ihre Antwort. Aus irgendeinem Grund hat das obige nicht den Zweck erfüllt. Ich habe jemanden eingestellt, um dieses Problem für mich zu beheben, ich poste ihre Lösung einmal vollständig. Ich schätze das oben Gesagte, es sah sehr vielversprechend und sinnvoll aus. Nicht sicher, warum es nicht funktioniert hat. –

+0

Was war die Lösung? – ingalcala

0

Ich habe die gleichen Bedürfnisse. Aber versuchen, es mit der wp allen Import "Bestellungen" -Option zu verwalten. Beim Import neuer Bestellungen von wp werden alle Importe nicht geändert. Aber WP alle Importunterstützung mir diese Funktion gab in den Einstellungen hinzuzufügen:

<?php 

add_action('pmxi_saved_post', 'my_update_stock', 10, 1); 

function my_update_stock($order_id) { 

$import_id = (isset($_GET['id'])) ? $_GET['id'] : $_GET['import_id']; 

if ($import_id == "37") { 
    $order = new WC_Order($order_id); 
    $items = $order->get_items(); 
    foreach($items as $item) { 
     $current_stock = get_post_meta($item['product_id'], '_stock', true); 
     $new_stock = $current_stock - $item['qty']; 
     update_post_meta($item['product_id'], '_stock', $new_stock); 
    } 
} 
} 

?> 

Sie wollen werden von den Import-ID ändern, um die ID Ihrer Bestellung ein Import übereinstimmen (Ich habe 37 hier als ein Beispiel gesetzt).

Es "fast" funktioniert. Ich meine neue Bestellungen betreffen die Aktien, aber nur die Hauptprodukte. Meine Bestellungen betreffen Variationsprodukte und mit diesem Tipp ändert sich der Variantenbestand nicht.Ich habe ein kurzes Video hier:

http://moroccanye.cluster011.ovh.net/stock/DEBUG_ORDER_IMPORT_SOFIA.mov

besser als mein schlechtes Englisch. Wenn jemand eine Idee hat, diesen Code für Variationen Produkte zu verbessern, um Variationen Produkte Lagerbestand zu beeinflussen ... vielen Dank.