Problem mit WordPress "save_post" Aktion
Entwickelt ich ein WordPress-plugin, die ausführen muss, für die zusätzliche Verarbeitung, wenn ein post von einem custom-post-Typ gespeichert wird.
Die logischste Lösung war, dass die "save_post" - Aktion. Bei Inanspruchnahme der action-handler entweder erstellt oder aktualisiert eine Datenbank-Datensatz in einer benutzerdefinierten Tabelle (abhängig davon, ob "Post Erstellen" oder "Beitrag Aktualisieren" geklickt wird).
Habe ich umgesetzt und es schien zu funktionieren perfekt, aber es gibt ein kleines Problem würde ich gerne beheben. Es scheint, dass "save_post" wird auch ausgelöst, wenn das laden der "Post Erstellen" - Seite für die erste Zeit (d.h. bevor irgendwelche Eingaben des Benutzers eingegeben werden und vor dem senden neu/änderungen Taste gedrückt wird).
Dies bedeutet, dass die custom-Datenbank-Tabelle ist immer gefüllt mit einer leeren Zeile für jeden neuen Beitrag gespeichert ist. Es bedeutet auch, dass es eine leere Zeile für jedes mal, wenn das hinzufügen von post-Seite geladen wird.
Hier ist eine vereinfachte version meines "save_post" handler:
function do_save_post($post_id) {
if (get_post_type($post_id) !== 'mycustomtype')
return $post_id;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
if (!current_user_can('edit_mycustomtype'))
return $post_id;
echo 'This happens when selecting "Add New" from admin sidebar.';
echo 'Even though post has not been saved or updated.';
echo 'This should only happen when button on right of editor is clicked.';
}
Wie kann ich erkennen, ob die post tatsächlich gespeichert?
Es ermöglicht anderen Haken, die zur Erfüllung Ihrer Verarbeitung mit den richtigen
$post_id
. Mein Haken ist nicht zu Versagen, Sie will einfach nur bestimmen, Wann die Verarbeitung vornimmt. Die $post_id
ist bestanden, von jedem Haken, jeder Haken zurück.danke für die Antwort! ich wusste nicht, dass der $post_id übergeben wurde, von Haken zu Haken. ich habe nicht bemerkt irgendwelche Probleme w/ code Abwürgen, wenn ich nicht zurück.
InformationsquelleAutor Lea Hayes | 2011-03-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem und hat einen Blick auf den betreffenden Abschnitt post.php. Stellt sich heraus, save_post wird jedesmal aufgerufen, wenn post.php läuft, so führen Sie es auf post-Erstellung, Liste, etc.
In WP 3.1, "post_updated" nur aufgerufen wird, auf save/create event in post.php. Also verwendet habe ich:
Hoffe, das funktioniert für Sie zu.
Das war einfach für mich eigentlich alles, was ich zu tun ist
if (!isset($_POST['my-extra-data'])) return $post_id;
+1 Das war wirklich nervt mich, weil es schien, um einen Satz von default-Werten für alle meine Felder, mit allen Checkboxen ausgeschaltet.
InformationsquelleAutor vsz
Verwendung der 'post_updated' Haken eher problematisch, vor allem bei der Verwendung von benutzerdefinierten post-Typen. Stattdessen habe ich es als meine Lösung:
Ich wollte nicht, dass beliebige Aktionen durchführen, wenn Elemente wurden geschickt in den Papierkorb.
InformationsquelleAutor Christine
Dieser Haken ausgeführt wird, wenn ein Beitrag oder eine Seite erstellt oder aktualisiert, die aus einem import, post/Seite Bearbeiten-Formular, xmlrpc, oder post per E-Mail. Also ich denke, es läuft auch, wenn ein post-revision gespeichert ist. Wenn ich wo würde ich überprüfen, ob die post-id eingestellt ist (ist das einzige argument der hook-Funktion bekommen sollte), und wenn es eine revision
wp_is_post_revision()
.$post_id
enthält eine gültige ID und daswp_is_post_revision()
scheint nicht zu helfen. Der hook wird ausgeführt, sobald Sie auf "Add New" ausgewählt ist aus der admin-Seitenleiste. Ich aktualisiert meine ursprüngliche Frage mit Demo-code, um zu helfen, näher auf das problem. Danke.InformationsquelleAutor Thomas Stachl
Möchten Sie vielleicht einfach nur prüfen, ob die Daten tatsächlich geschrieben sind oder nicht.
InformationsquelleAutor Hamed Momeni