Ich betreibe eine Immobilienseite, auf der viele Immobilien in Wohnblöcken verkauft werden.
Aus diesem Grund erstellen die Inhaltseditoren einen Beitrag / eine Eigenschaft mit allen Details und verwenden dann ein doppeltes Beitrags-Plugin, um die anderen zu erstellen.
Jedes Mal, wenn sie einen Beitrag / eine Eigenschaft duplizieren, ändern sie den Titel, um die Eigenschaftsnummer wiederzugeben, und ändern möglicherweise einige Bits des Metadaten-EG-Preises.
Was sie vergessen, ist, die Schnecke auszurotten und aus dem Titel eine neue zu generieren. Hier ist ein Beispiel für einen Slug aus der ersten eingegebenen Eigenschaft:
merle-court-plot-50-182-carlton-vale-nw6-5hh
aber dann, wenn sie duplizieren, werden die Schnecken:
merle-court-plot-50-182-carlton-vale-nw6-5hh-2
merle-court-plot-50-182-carlton-vale-nw6-5hh-2-2
merle-court-plot-50-182-carlton-vale-nw6-5hh-2-2-2
merle-court-plot-50-182-carlton-vale-nw6-5hh-2-2-2-2
etc
Aber wenn sie die Titel ändern, sind die Schnecken besser wie:
merle-court-plot-51-182-carlton-vale-nw6-5hh
merle-court-plot-52-182-carlton-vale-nw6-5hh
merle-court-plot-53-182-carlton-vale-nw6-5hh
merle-court-plot-54-182-carlton-vale-nw6-5hh
etc
Also meine Frage:
Wie erzwinge ich, dass der Slug beim Speichern nach dem Speichern neu generiert wird, nachdem der Eigenschaftstitel aktualisiert wurde?
Der Slug für dieses CPT sollte immer automatisch generiert werden. Es ist nie erforderlich, ihn manuell festzulegen.
wp_insert_post_data
nach dem Update gefeuert? Der Beitrag wurde bereits durch den Vervielfältigungsprozess erstellt. Der Slug muss geändert werden, sobald der Beitrag mit dem richtigen Titel aktualisiert wurde.A filter hook called by the wp_insert_post function prior to inserting into or updating the database.
Führen Sie den Slug außerdem
sanitize_title_with_dashes()
durch,wp_unique_post_slug()
um sicherzustellen, dass er einzigartig ist. Es wird automatisch '-2', '-3' usw. angehängt, wenn es benötigt wird.quelle
Anstatt Leerzeichen zu ersetzen, sollten Sie die eingebaute Funktion verwenden,
sanitize_title()
die das Ersetzen für Sie übernimmt.So was:
Außerdem sollten Sie eine einzigartige Schnecke verwenden. Was Sie mit der Funktion bekommen können
wp_unique_post_slug()
Alles zusammen könnte eine Lösung sein:
quelle
Etwas, das ich für eine Weile gebucht hatte, ist das Folgende (noch nicht getestet):
Quelllink
quelle
str_replace()
wäresanitize_title_with_dashes()
besser geeignet?wp_update_post
Siewp_insert_post
function aufrufen , rufen Sie function auf, wodurch einesave_post
Aktion ausgelöst wird . Sie erhalten eine Endlosschleife.