Ich muss den Autorennamen als Unterverzeichnispräfix für alle Beiträge und Seiten des Benutzers hinzufügen.
Zum Beispiel:
example.com/johndoe/ //The author page for John Doe
example.com/johndoe/category/test-post/ //Test post by user John Doe
example.com/johndoe/test-page/ //Test page by user John Doe
Wenn ich die Permalink-Struktur in ändere, /%author%/%category%/%postname%/
funktioniert dies einwandfrei, um den Beitrag eines Benutzers anzuzeigen, jedoch nicht die Seite eines Benutzers.
Ich bin mir jedoch nicht sicher, ob ich etwas tun kann .htaccess
oder functions.php
ob ich das pages
auf die gleiche Weise zum Laufen bringen kann.
Ich verstehe, dass dies mit Multisite erreicht werden kann, aber ich versuche, dies zu vermeiden, da der Client es nicht verwenden möchte.
utility
dient zu Informationszwecken und wird selten geändert, in diesem Fall fast statische Daten, die für den "Benutzer" oder "Autor" spezifisch sind;archival
sind die Daten, die der "Benutzer" im Laufe der Zeit eingegeben hat.Antworten:
Wie es aussieht, gibt es ein Plugin, um genau dies zu erreichen. Sparen Sie sich also das Rollen eines eigenen Plugins.
Das Plugin lautet: https://wordpress.org/plugins/permalinks-customizer/
Ich habe es installiert, um zu testen, ob es das tut, wonach Sie suchen. Hier ist ein Screenshot, der zeigt, was Sie tun würden:
quelle
Getestet mit Wordpress 5.0.4
Das erste Problem, das gelöst werden muss, ist der Wert post_name für Seiten, die denselben Slug verwenden würden (z. B. about-me ).
Die einfachere Lösung , die ich gefunden ist , den Autor hinzufügen nicename (Achtung: in meiner Lösung soll es keinen Bindestrich enthält) als ersten Teil des Rohlings:
About-Me-Seite Post-Name für John: John-About-Me
About-Me-Seite Post-Name für Mary: Mary-About-Me
Dies kann mithilfe des Filter- Hooks wp_insert_post_data (siehe in wp-include / post.php definierte Funktion wp_insert_post () ) beim Erstellen der Seite erreicht werden:
Der nächste Schritt besteht darin, die Regeln für das Umschreiben von wp zu ändern , um unseren Wünschen gerecht zu werden (Sie müssen auch die Einstellungen> Permalinks aktualisieren ):
Der letzte Schritt besteht darin, den zurückgegebenen Wert zu ändern, wenn der Code nach einem Seitenpermalink fragt (z. B. in Menüs).
Dazu müssen wir den page_link- Filter-Hook verwenden (der sich in der in wp-includes / link-template.php definierten Funktion get_page_link () befindet ).
..aber es wird nicht funktionieren , wenn Sie nicht setzt auf falsche der use_verbose_page_rules Eigenschaft $ wp_rewrite globaler Instanz; Dadurch wird parse_request () gestoppt , um zu überprüfen, ob ein "falscher" übereinstimmender Seitenpfad vorhanden ist:
Das ist alles. Nun, um ehrlich zu sein, ist dies der Hauptteil, aber es wird eine andere Arbeit sein, wie das Ändern der Umschreiberegeln auch für alle Anhänge / Kommentare / Feeds / Einbettungssachen, die mit einer Seite verknüpft sind und möglicherweise etwas sind sonst hatte ich nicht genug Zeit zu entdecken.
Dies ist mein erster Beitrag; Ich hoffe, es wird jemandem helfen, wie viele andere mir geholfen haben.
quelle