Um Daten aus einem View in einen anderen zu kopieren während dem Speichern wird ein Hook zur Verfügung gestellt.
Normalerweis muss im Bereich Custom-Actions ein Hook manuell programmiert werden. Für diesen einen Case, haben wir einen Automatismus erstellt, der den Hook-Code selber generiert und hinterlegt.
Regeln
Bsp. für diesen Automatismus: Wenn in dem View Bestellung/Order eine Bestellung erfasst, editiert oder gelöscht wird, so soll diese Bestellung während dem speichern in das dataSchema/View Rechnung/Report kopiert werden.
Regel 1. Das Feld ID/postID in der Spalte «copy from Feld» muss für jeden Ziel-View in ein Feld kopiert werden. Dieses Feld darf in der Spalte «copy to Field» nicht das ID/postID Feld sein. Dieser Vorgang stellt den Primärschlüssel dar.
Regel 2. Jeder Ziel-View muss einen «copy to Feld» Eintrag aufweisen der etwas in den post_title schreibt. Dies ist nötig, da WordPress einen Titel für einen Eintrag verlangt.
Regel 3: Relation-Felder können in zwei Modes kopiert werden:
– 1:1 => Die Daten werden 1:1 in das Ziel-Feld kopiert
– 1:n => Die Daten der Relation werden in eine Zeile pro Relation Eintrag kopiert. So entstehen n Einträge pro Relation. Es können auch mehrere Relations mit 1:n kopiert werden.
Es werden die Felder welche in der von Relation angegebenen Tabelle aufgeführt werden in den Ziel-View kopiert.
In das angegebene Feld copy to Field in der Relation wird die ID der Relation kopiert. Daher muss dieses Feld vom typ post/post_meta/post_meta_as_relation sein. Dieser wert stellt den Primärschlüssel für die Relation dar.
Praxis Beispiel
Add Create,- Update,- Destroy-Action Tabelle
Der Kopiervorgang schematisch dargestellt
Die Bestellung/Order hat zwei Services hinterlegt. Da orders_sevice_relation ein 1:n Kopiervorgang ist, werden zwei Einträge beim kopieren hinterlegt in der Tabelle Rechnungen/Report. Um den Service in der Report-Tabelle eindeutig einem Service zuordnen zu können, wird die postID des Service in der service_id hinterlegt.
Um die Order in dem Report eindeutig zuordnen zu können wird die postID der Order im Report unter order_id eindeutig hinterlegt.
Da der Status in der Kopieranweisung als Konst. hinterlegt ist wird nicht der Wert von Status in Order, sondern der vorgegebene Wert Konst. = 1 in Report hinterlegt.
Kopierfunktionen Hinweise
- Felder vom DatenTyp post_meta_dynamic können in andere post_meta oder post Felder kopiert werden welche als String hinterlegt werden.
Es ist aber nicht möglich ein Feld mit einem String oder ähnlichen Feld in ein post_meta_dynamic Feld zu kopieren.
Es ist möglich ein post_meta_dynamic in ein post_meta_dynamic Feld zu kopieren
Weitere Infos zu diesem Thema:
Tags: add-create-update-destroy-action