Ist der Post-Name eines Post-Objekts bei nicht-hierarchischen benutzerdefinierten Post-Typen immer gleich dem “Pfad”? (mit der function get_page_by_path ())

Der Kurze:

Beim Eingeben des Pfades in get_page_by_path () etwas wie folgt :

$post_object = get_page_by_path( 'path_of_post', OBJECT, 'my_custom_post_type' ) 

… Unter der Annahme, dass der benutzerdefinierte Post-Typ nicht-hierarchisch ist, gibt es ein Szenario, in dem der in die function eingegebene Pfad nicht mit dem Slip eines Post-Objekts übereinstimmt?

(Was ich mit Slug gemeint habe, ist $ post_object-> post_name)

================================

Das lange:

Ich benutze benutzerdefinierte Post-Typen im Hintergrund für ein paar Plugins, die ich erstelle. Der Endbenutzer hat keinen Zugriff auf die tatsächlichen Bearbeitungspost-Bildschirme für diese benutzerdefinierten Post-Typen. Alle Admin-Seiten, die der Endbenutzer tatsächlich sieht, sind benutzerdefiniert.

Für ein Beispiel von zwei Dingen, die ich mache: Ich habe ein Plugin, das Slideshows erstellt, wobei jede Slideshow ein eigener “Slider” vom Post-Typ ist. Ich habe ein Layout-Builder-Plugin, bei dem jedes benutzerdefinierte Layout ein benutzerdefiniertes Post-Layout ist. In diesem Beispiel treffen sich die beiden, wenn der Benutzer innerhalb eines Layouts dem Layout eine Diashow zuweisen kann.

Zur Zeit habe ich dieses Setup, wo im Post-Meta für ein Layout der Benutzer die Post-ID eines Sliders speichern kann.

Das Problem bei der Verwendung von Post-IDs:

Am Ende möchte ich Benutzern XML-Beispieldateien aus dem WordPress-Export-Tool zur Verfügung stellen. Also, sie könnten dann diese Posts der verschiedenen Post-Typen zusammen mit allen Post-Meta-Informationen importieren, und alles läuft zusammen, ohne dass ich irgendeine Art von Mod für WordPresss Import / Export-Tool erstellen muss, um dies zu bewältigen.

Aber wenn Sie Posts aus einer Export-Datei importieren, muss das WordPress-Tool allen Posts natürlich neue IDs zuweisen. Wenn also zum Beispiel ein Layout einen Schieberegler hatte, der von der Post-ID zugewiesen wurde, dann gilt das für die beiden Posts Posts wurden importiert, die ID des Sliders stimmt nicht mehr mit dem des Layouts überein.

Mein neuer Plan:

Also versuche ich eine andere Art und Weise zu finden, alles einander zuzuweisen, also wird alles mit WordPresss Import / Export kompatibel sein und ich kann die zugewiesenen Posts effizient nutzen.

Die beste Idee, die ich hatte, ist, einem Schieberegler (zB) einen Schieberegler zuzuordnen, indem $post_object->post_name den Slug $post_object->post_name des Schiebereglers $post_object->post_name . Auf diese Weise kann ich am Frontend der Seite WordPress verwenden get_page_by_path(); function, um das Objekt des Pfostens zu greifen.

Der Grund für meine Frage (siehe oben) besteht also nur darin, sicherzustellen, dass es nichts gibt, was ich übersehen habe, wenn ich diese function verwende und all diese Dinge auf ihre Nacktschnecken verweise. Vielleicht gibt es auch eine bessere Möglichkeit, auf alle meine Posts mit benutzerdefinierten Posts zu verweisen, als diese Methode, die ich mir ausgedacht habe?

Solutions Collecting From Web of "Ist der Post-Name eines Post-Objekts bei nicht-hierarchischen benutzerdefinierten Post-Typen immer gleich dem “Pfad”? (mit der function get_page_by_path ())"

Ich bin nicht sehr vertraut mit dem Export-Modul, also was ich vorschlage, ist vielleicht nicht ein passendes für Ihre Bedürfnisse, aber die Antwort auf Ihre Frage ” Wird ein post-Objekt post_name immer gleich dem 'path' auf nicht-hierarchisch sein benutzerdefinierte Post-Typen? (mit get_page_by_path() function) “ist ” es abhängt. “ 🙂

Genauer gesagt kann der Pfad eines Post-Typs unter Verwendung des 'post_type_link' gefiltert werden, so dass er nicht immer gleich post_name aber interessant ist, dass sich die function get_page_by_path() nicht selbst um diesen Hook kümmert. Wenn also eine Website ein 'post_type_link' verwendet, das den Pfad des benutzerdefinierten Post-Typs mithilfe des 'post_type_link' ändert, besteht die 'post_type_link' dass sie nicht synchronisiert werden. Trotzdem, da get_page_by_path() den Hook ignoriert, würde es wahrscheinlich für Ihre Bedürfnisse funktionieren.

Das heißt, ich würde nicht empfehlen, den page_name zu verwenden, um die beiden zu verknüpfen. Ich habe es in der Vergangenheit schon einmal versucht und diesen Pfad lügt verrückt. Es ist einfach zu einfach für ein anderes Plugin, den page_name zu ändern und die page_name zu page_name . Ich habe von vielen harten Schlägen gelernt, dass, wenn Sie an Robustheit interessiert sind, Sie Ihre Assoziationen (auch Fremdschlüssel ) immer mit IDs und (fast?) Niemals menschenlesbaren Strings speichern sollten.

Besser, das post_parent Feld in Ihrem Slider zu verwenden, um die post_id des Layouts zu post_id (aber nur, wenn jeder Slider für ein Layout eindeutig ist) oder um die post_id des post_id in wp_postmeta für einen Schieberegler mit einem meta_key von (ähnlich) '_layout_id' meta_value der meta_value des Layouts und post_id gleich der Post-ID des Sliders.

Würde einer dieser beiden Ansätze funktionieren?