Ich habe eine benutzerdefinierte Datei namens xxxx_url
. xxxx_url
sollte einzigartig sein.
Bevor ich den Beitrag veröffentliche, möchte ich sicherstellen, dass er xxxx_url
eindeutig ist oder nicht. Wenn es nicht eindeutig ist, sollte die Veröffentlichung des Beitrags abgelehnt werden.
Ich habe es versucht publish_post
. Dies ist jedoch nicht der richtige, da es ausgelöst wird, wenn wir den Beitrag veröffentlichen. Ich möchte meinen Code kurz vor der Veröffentlichung ausführen.
custom-field
filters
hooks
actions
Ich bin die dümmste Person
quelle
quelle
132_url
Wo132
ist die Post-ID. Dann haben Sie hier immer einen einzigartigen Wert. Außerdem: Benutzerdefinierte Felder sollten in dersave_post
Aktion gespeichert werden . In dieser Aktion können Sie das benutzerdefinierte Feld überprüfen (wenn es nicht leer ist und beispielsweise einen eindeutigen Wert hat) und basierend daraufupdate_post_meta
oder nicht. Ich denke, Sie können auch das benutzerdefinierte Feld überprüfen und, wenn es keinen eindeutigen Wert hat, den Wertpost-status
aufdraft
oder etwas anderes setzen, um die Veröffentlichung zu deaktivieren. Ansonsten brauche ich dazu jQuery.Antworten:
Zu Beginn
wp_insert_post
der Funktion, die einen Beitrag speichert / aktualisiert, wird ein Filter aufgerufenwp_insert_post_empty_content
. Standardmäßig prüft dieser Filter, ob die Felder Titel, Editor und Auszug leer sind. In diesem Fall wird der Speichervorgang angehalten.Da jedoch alle zu speichernden Felder an diesen Filter übergeben werden, können Sie diesen Filter um jeden anderen Test erweitern, um festzustellen, ob der Beitrag als leer betrachtet werden soll. Es wäre ungefähr so:
Hinweis: Die Funktion muss 'true' zurückgeben, um den Speichervorgang anzuhalten.
Wenn das benutzerdefinierte Feld nicht eindeutig ist, möchten Sie möglicherweise auch eine Warnung wiederholen.
quelle
wp_insert_post_empty_content
semantisch für leere Inhalte gedacht ist . Trotzdem habe ich auch keinen semantisch richtigen Haken dafür gefunden.wp_insert_post_valid_content
um dies auszudrücken, aber im Übrigen ist er genau an der richtigen Stelle.wp_insert_post_empty_content
Filter gefunden?Wie wäre es mit AJAX, um die Eindeutigkeit zu überprüfen, bevor Sie den Beitrag zur Veröffentlichung einreichen?
Der Code wird zwar nicht getestet, sollte aber funktionieren. Möglicherweise müssen Sie damit spielen, um das gewünschte Ergebnis zu erzielen.
quelle
Ich würde mich in den Filter wp_insert_post_data einbinden und dies so aufdringlich wie möglich behandeln, da Sie meines Wissens das Einfügen eines Posts nicht blockieren möchten, sondern nur vermeiden möchten, einen Post mit doppelten Metawerten zu veröffentlichen.
Ich kann in diesem Fall nicht zu viel sparen, weil Sie keinen Code freigegeben haben, aber hier ist ein Pseudocode eines Filters, der funktionieren würde:
Eine weitere großartige Sache an diesem Filter ist, dass er von den Anhängen getrennt ist
wp_insert_attachment_data
.Ich hoffe es hilft und was auch immer du tust, es klingt großartig!
quelle
$data['post_status']
istpublish
und der Benutzer es aktualisiert? Würde dasdraft
Erstellen des Beitrags nicht zu einem404
Problem für diesen Beitrag führen?Der Scheck sollte gehen
wp_insert_post
. Dieser Hook wird ausgelöst, wenn ein Beitrag veröffentlicht oder bearbeitet wird.Dort können Sie eine benutzerdefinierte Abfrage durchführen, um zu überprüfen, ob ein Beitrag bereits denselben
xxxx_url
Wert hat oder nicht.quelle
wp_insert_post
Aktion ausgelöst wird, sobald ein Beitrag gespeichert wurde. Sie kann das Veröffentlichen oder Einfügen von Beiträgen nicht blockieren.If it isn't unique it should reject publishing post.
in meiner Frage klar erwähnt .