Sind Post-IDs zuverlässig?


7

Ich verstehe, dass Post-IDs eindeutig sind , aber sind sie als persistente Daten-IDs zuverlässig ?

Gibt es eine Garantie dafür, dass sich die Post-IDs durch eine Migration oder einen anderen Datenaustausch nicht ändern?

Ich verstehe, dass WordPress hauptsächlich mit MySQL implementiert wird, daher werden IDs vom AUTO_INCREMENTMechanismus gesteuert . Gibt es jedoch eine Einschränkung auf Wordpress-Seite, die dieses Verhalten in Zukunft oder möglicherweise bei einer anderen Persistenzimplementierung (wie MongoDB) ändern würde?

Antworten:


6

Die pedantische Antwort lautet NEIN.

IDs sind zwar eindeutig, können jedoch ohne Änderung in UX geändert werden, solange die Änderung die Konsistenz der Datenbank beibehält. Während beim Erstellen eines neuen Beitrags eine neue eindeutige ID generiert wird, können Sie auch einen Beitrag per Code erstellen, um eine "alte" ID wiederzuverwenden.

In der Praxis sind sie zuverlässig, aber wenn Zuverlässigkeit für Sie sehr wichtig ist, müssen Sie dem Beitrag einige Daten hinzufügen, die als zuverlässige Kennung für Ihre eigenen Bedürfnisse verwendet werden.

Update: Ich habe es total vergessen, weil es selten verwendet wird und die meiste Zeit, als ich es gesehen habe, wurde es falsch verwendet, aber WordPress hat per Definition eine zuverlässige eindeutige Kennung und es ist die GUID


1
Es hängt alles davon ab, welche Zuverlässigkeit Sie benötigen. Die Eindeutigkeit der ID ist nur ein Nebenprodukt des automatischen Inkrements und wird an keiner Stelle als das Feld definiert, das den Beitrag identifiziert, und ich habe es beim Schreiben der Antwort völlig vergessen, aber es gibt ein Feld, das per Definition ein ist eindeutige zuverlässige Kennung des Inhalts und es ist die Guid codex.wordpress.org/Changing_The_Site_URL#Important_GUID_Note
Mark Kaplun

1
@guidod, nichts ist zuverlässig gegen schlechten Code, der Standards nicht respektiert. ID ist nicht einmal ein Standard.
Mark Kaplun

1
hmmm, und natürlich ändert es sich beim Export und Import nicht und es enthält URI nicht URL.
Mark Kaplun

2
Was "ID ist nicht einmal ein Standard" betrifft, wissen Sie nicht genau, was Sie meinen. Das automatische Inkrementieren von IDs in MySQL-Datenbanken ist Standard (de facto, wenn Sie so wollen, aber trotzdem Standard). Die GUID wird geändert, wenn Sie oder jemand in Zukunft die alte Domain -> neue Domain in einer WordPress-Datenbank ersetzen, was viele Leute tun (definitiv viel häufiger als manuelles Basteln mit den IDs).
Guidod

1
ID ist im Gegensatz zu einem Global Unique IDentifier nur eine Zahl ohne zugewiesene Bedeutung. Nur weil so viele Menschen schuldig sind, die GUID nicht zu verstehen und zu denken, dass es sich um eine URL handelt, ist die ID nicht zuverlässiger als sie ist, sondern nur, dass die GUID weniger zuverlässig ist.
Mark Kaplun

9

Ich verstehe, dass Post-IDs eindeutig sind, aber sind sie als persistente Daten-IDs zuverlässig?

Ja.


2
Könnte hier die Antwort des Monats sein
Andrew Bartel

4
In der Frage wird speziell "durch eine Migration" erwähnt. Soweit ich mich erinnere, werden durch den WP-Exporter / Importer-Prozess die Post-IDs geändert, um sie an die des neuen Systems anzupassen. Wenn Sie die Posts 1-10 von Site A exportieren und in Site B importieren, die bereits 20 Posts enthält, lauten die IDs Ihrer neuen Posts 21-30.
Lex R

Wo wird "Migration" erwähnt? Abgesehen davon ist "Migration einer Datenbank" nicht dasselbe wie "Verwenden des WordPress-Importers". Wenn Sie Ihre Datenbank migrieren, bleiben die Post-IDs mit Sicherheit gleich.
Johannes Pille

2
durch eine Migration oder einen anderen Datenaustausch im zweiten Absatz. Ich würde sagen, der Importeur qualifiziert sich als "ein weiterer Datenaustausch".
Milo

+1 auf den Kommentar - muss diesen Teil nicht gelesen haben. Zweimal. Und daher auch eine positive Bewertung des Kommentars von @ LexR.
Johannes Pille

4

Um alles, was gesagt wurde, zusammenzufassen, lautet die Antwort:

Ja, IDs sind dafür zuverlässig, solange Sie den WordPress XML-Exporter / -Importer nicht verwenden, um die betreffenden Beiträge in eine andere Installation zu übernehmen. Solange Sie die vorhandene Datenbank migrieren und WordPress nicht von Grund auf neu installieren, bleiben die IDs gleich.

PS1: Ja, wie Mark Kaplun feststellt, können IDs geändert oder wiederverwendet werden, wenn Sie sie manuell ändern oder wiederverwenden , aber das wissen Sie bereits, und dies gilt für jedes Feld in einer Datenbank.

PS2: Das GUID-Feld wp_posts sollte nicht als konstant eingestuft werden, da es von den URLs der ursprünglichen Posts abhängt und bei der Migration der Website versehentlich durch neue URLs ersetzt werden kann. Offensichtlich würde sich auch die GUID bei Verwendung des Exporters / Importers ändern .


Sind Sie absolut sicher, dass sich die GUIDs bei Verwendung des Exporteurs / Importeurs wirklich ändern würden? Diese Antwort zeigt an, dass sich die GUID beim Export / Import nicht ändert: wordpress.stackexchange.com/questions/64779/…
Magne

1

Die Antwort kann sowohl Ja als auch Nein sein.

Die ID muss für eine Site eindeutig sein. Sie wissen, wenn es zwei IDs gibt, kann der Inhalt nicht bereitgestellt werden. Verwenden Sie als WP die ID, um Inhalte für Posts und Seiten bereitzustellen. Die WordPress-Schleife funktioniert so. Sie können es also für Ihre Theme- oder Plugin-Entwicklung verwenden. Damit wird es kein Problem geben.

Es kann jedoch schmerzhaft sein, wenn Sie Inhalte von einer Website auf eine andere exportieren. Da die neue Website möglicherweise eine eindeutige ID für den neu hinzugefügten Inhalt generiert. In diesem Fall kann die ID keine gute Lösung sein.

Sie können also Slug anstelle von IDs verwenden.

PS Slug kann auch geändert werden. Es wird jedoch nicht automatisch geändert, wenn Sie Inhalte von einer Website auf eine andere importieren.

Hoffe das hilft. Sabbir


0

Post-IDs sind nicht unbedingt eindeutig. Ref. Meine Antwort auf den Beitrag, auf den Sie verlinkt haben: https://wordpress.stackexchange.com/a/209832/71131

Innerhalb eines Wordpress Multisite-Netzwerks idsind diese nicht eindeutig . Ein Blog-Beitrag auf einer Website kann dieselbe ID haben wie ein Blog-Beitrag auf einer anderen Website. Wahrscheinlich, da jede Site eine separate Datenbank / Tabelle hat. (Dies ist mir gerade passiert.) Dies ist problematisch, wenn Sie in Ihrem Code (in einem Plugin oder in einem Drittanbieter, der mit der Wordpress-Installation kommuniziert) die Wordpress verwenden id, um auf einen bestimmten eindeutigen Blog-Beitrag in Wordpress zu verweisen Multisite-Netzwerk.

Daher empfehle ich $post->guidstattdessen die Verwendung von Wordpress als Global Unique IDentifier. Vielen Dank an @Mark Kaplun, der mich darauf aufmerksam gemacht hat. NB: Die Guid muss in unteren Kappen sein, damit sie funktioniert.

@guidod erwähnte das Risiko, dass "[die Guid] versehentlich durch neue URLs ersetzt werden kann, wenn die Website migriert wird" , weil jemand möglicherweise alle URIs sucht / ersetzt und / oder den URI-Teil der GUID als aktualisieren möchte Nun, obwohl sie niemals etwas in der GUID ändern sollten. Um dieses Risiko zu minimieren, können Sie das auch $post->IDals Backup speichern . Wenn Ihr Drittanbieter, der auf Blog-Beiträge in Ihrer Wordpress-Installation zugreift und auf diese verweist, keinen Beitrag basierend auf der Richtlinie finden kann, kann versucht werden, die ID des Beitrags zu ermitteln (denken Sie jedoch daran, sie anhand des entsprechenden Blogs / der entsprechenden Website zu kontextualisieren, wenn Sie dies tun es auf einer Multisite-Installation).


NB: Die Guid muss in unteren Kappen sein, damit sie funktioniert.
Magne
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.