5

Ich suche und versuche es für 2 Tage ohne Erfolg, bitte helfen.Woocommerce Admin Bestelldetails - Zeigen Sie benutzerdefinierte Daten auf Bestelldetails Seite

Ich möchte Woocommerce Bestellungen filtern, um zusätzliche Details von db hinzufügen zu bestellen Details Seite basierend auf Produkt-Attribut, aber ich kann nicht die richtige Woocommerce Aktion/Filter Hook für diese Aufgabe zu finden. Angenommen, ich habe Variable $is_customized = false;

Wenn $is_customized == true dann muss ich benutzerdefinierte Daten aus der Datenbank auf Bestellungen Detailseite hinzufügen.

HINWEIS: Ich möchte nicht zusätzliche Meta-Box hinzufügen stattdessen möchte ich bestellen Detail Tabelle ändern für:

  • die Standardproduktbild mit dem in der Datenbank gespeicherten Bild austauschen und
  • Hinzufügen eines div mit benutzerdefinierten Attributen unter dem Produktnamen.

Ich habe alle diese Werte in meinen Variablen, aber ich kann nicht herausfinden, welche Aktion Haken ich verwenden sollte.

Ich habe zur Verdeutlichung ein Bild beigefügt.

enter image description here

müssen nur wissen, ob ich kann diese Reihenfolge Ergebnisse ändern/Filter und wie?

Ich schätze für Ihre Zeit und Hilfe. Dank

+0

Wie alle anderen benutzerdefinierten Post-leitenden Säulen werden über behandelt [ '$ post Stellen der Verwaltung columns'] (https://codex.wordpress.org/Plugin_API/Filter_Reference/manage_$post_type_posts_columns) und ['verwalte $ post type posts custom column'] (https://codex.wordpress.org/Plugin_API/Action_Reference/manage_$post_type_posts_custom_column). Und bei Bestellungen lautet der Post-Typ 'shop_order'. – helgatheviking

+0

Nevermind, ich habe mir deinen Screenshot genauer angesehen und es ist nicht das, woran ich denke. Das heißt, es ist eine Metabox, also könnte man sie im schlimmsten Fall entfernen und stattdessen eine modifizierte Version hinzufügen. – helgatheviking

+0

bedeutet, dass keine Aktion/kein Filter verfügbar ist, um diese Ergebnisse zu filtern oder anzupassen, anstatt das gesamte Modul neu zu schreiben? –

Antwort

8

Hier ist ein Anfang, wie auf dem woocommerce_before_order_itemmeta Haken zusätzliche Daten anzuzeigen:

add_action('woocommerce_before_order_itemmeta', 'so_32457241)before_order_itemmeta', 10, 3); 
function so_32457241_before_order_itemmeta($item_id, $item, $_product){ 
    echo '<p>bacon</p>'; 
} 

Ich weiß nicht, wie Sie Ihre Daten speichern, so kann ich nicht mehr eine genauere machen Vorschlag. Denken Sie daran, dass alles, was Sie als Order item meta gespeichert haben, sofort nach diesem Hook automatisch angezeigt wird.

Filtern des Bildes ist schwieriger. Ich habe diese gist als Start gefunden, aber es erfordert einige benutzerdefinierte bedingte Logik, wie Sie die Miniatur nicht überall, sondern nur in Bestellungen filtern wollen.

Edit: Derzeit ist das Beste, was ich Thumbnails zum Filtern der Artikel kann:

add_filter('get_post_metadata', 'so_32457241_order_thumbnail', 10, 4); 
function so_32457241_order_thumbnail($value, $post_id, $meta_key, $single) { 
    // We want to pass the actual _thumbnail_id into the filter, so requires recursion 
    static $is_recursing = false; 
    // Only filter if we're not recursing and if it is a post thumbnail ID 
    if (! $is_recursing && $meta_key === '_thumbnail_id') { 
     $is_recursing = true; // prevent this conditional when get_post_thumbnail_id() is called 
     $value = get_post_thumbnail_id($post_id); 
     $is_recursing = false; 
     $value = apply_filters('post_thumbnail_id', $value, $post_id); // yay! 
     if (! $single) { 
      $value = array($value); 
     } 
    } 
    return $value; 
} 


add_filter('post_thumbnail_id', 'so_custom_order_item_thumbnail', 10, 2); 
function so_custom_order_item_thumbnail($id, $post_id){ 
    if(is_admin()){ 
     $screen = get_current_screen(); 
     if($screen->base == 'post' && $screen->post_type == 'shop_order'){ 
      // this gets you the shop_order $post object 
      global $post; 

      // no really *good* way to check post item, but could possibly save 
      // some kind of array in the order meta 
      $id = 68; 
     } 
    } 
    return $id; 
} 
+0

Vielen Dank, es ist die genaue Sache, die ich eigentlich suche. Kannst du mir bitte sagen, wie ich das Bild auch ersetzen kann? Und ich brauche hier auch einen Filter für die Quantität. Bedeutet, dass ich die Menge nicht anzeigen möchte, wenn die Bedingung wahr ist. –

+0

Je mehr ich es ansehe, desto mehr denke ich, dass das Filtern des Bildes * sehr * schwierig ist und möglicherweise einige Filter zu WooCommerce hinzugefügt werden müssen. Es ist einfach genug, dies im Allgemeinen zu tun, aber die 'get_post_thumbnail_id()' Funktion beruht nur auf dem '$ post_id' und es gibt derzeit keine Möglichkeit, das' $ order_item' zu sehen, welches die Version des Produkts ist einzigartig, dass diese bestimmte Reihenfolge. – helgatheviking

+0

ja, lass mich das erklären. Eigentlich ist es ein Design-Tool und jeder Kunde wird sein eigenes Produkt entwerfen und natürlich wird das Produktbild jedes Mal anders sein. Ich habe erfolgreich benutzerdefinierte Daten und Bilder von der Sitzung zum Warenkorb hinzugefügt und dann Bestellungen, aber ich stecke hier fest. Der Name des Produktbildes ist in db und ich kann es über Bestell-ID bekommen, aber wie überschreiben? Das ist der Hauptpunkt. –

Verwandte Themen