WordPress: Wie wandle ich eine generierte URL (Permalink) in eine hübsche URL um?
Lesezeit: 3 Minuten
sonnenseite
In einem Plugin generiere ich einen paginierten Link zu einer Kategorie,
dh http://localhost/?cat=17&paged=5. Die Kategorie ist durch Slug und ID bekannt.
Bearbeiten: Da es einige Missverständnisse darüber gibt, was ich zu erreichen versuche, hier ist, was ich habe:
Die Kategorie-ID
Die Seitenzahl (d. h. die fünfte Seite des Archivs dieser Kategorie)
Mit diesen Daten kann ich die URL zu dieser Seite erstellen, das wäre zum Beispiel http://localhost/?cat=17&paged=5, und das funktioniert gut. Das Problem ist visueller Natur: Wenn der Benutzer hübsche Permalinks aktiviert hat, dann passt das nicht sehr gut. Die Frage ist: Wie bekomme ich den richtigen, hübschen Permalink (dh http://localhost/category/foo/page/5) von (oder für) die Informationen, die ich habe?
Bearbeiten 2: Offensichtlich, wenn ein Benutzer hübsche Permalinks hat deaktiviert, dann gibt es keine hübschen Permalinks. Das weiß ich, und das ist wirklich nicht Gegenstand der Frage … Nehmen wir für den Moment einfach an, der Benutzer hat eine willkürlich Permalink-Einstellung. Ich generiere einen Link, und er sollte so aussehen, wie der Benutzer es möchte.
Können Sie diese nicht einfach im Permalink-Optionsfeld ändern? Wenn Sie „Benutzerdefiniert“ auswählen und /%postname%/ eingeben, wird dies ähnlich wie bei Ihnen generiert, es sei denn, dieses Plugin ändert die URLs irgendwie?
– Martin
22. März 2010 um 10:55 Uhr
Ich fürchte, ich komme nicht auf den Punkt. Mein Plugin weiß nichts über die vom Benutzer eingestellte Permalink-Struktur. Im Moment kann ich die Seite, zu der ich einen Link erstelle, nur über die Kategorie-ID und die Seitennummer ansprechen. Was ich suche, ist eine Art Filter, der diese generierte URL in die vom Benutzer konfigurierte Struktur ändert.
– Sonnenseite
22. März 2010 um 17:55 Uhr
Es gibt eine Einstellung in der Verwaltung->Einstellungen->Permalinks
– Benutzer177800
22. März 2010 um 18:26 Uhr
@fuzzy lollipop: Ich kenne diese Einstellung und das möchte ich erreichen. Nun stellt sich die Frage: Wie macht WordPress das, wo steckt die Magie und wie kann ich sie für mich (missbrauchen)? 🙂
Ja, aber ich bin mir nicht sicher, wie ich es für diese Aufgabe verwenden soll.
– Sonnenseite
23. März 2010 um 14:55 Uhr
Kennen Sie Beispiele, wie Sie WP_Rewrite für diesen Zweck verwenden können? Alles, was ich finden kann, ist, wie man neue Permalink-Tags usw. hinzufügt. (Der Codex ist die meisten wieder nützlich …)
– Sonnenseite
23. März 2010 um 15:17 Uhr
Entschuldigung, aber ich habe es auch nicht benutzt. Ich habe noch etwas im Codex herumgestöbert und bin auf die Rewrite-API gestoßen, vielleicht hilft das? codex.wordpress.org/Rewrite_API
– Manzabar
24. März 2010 um 13:20 Uhr
Leider nicht. Soweit ich weiß, funktioniert es umgekehrt, sodass ein “netter” Permalink in $_GET-Variablen geparst werden kann. Vielen Dank aber!
– Sonnenseite
25. März 2010 um 11:34 Uhr
Tut All-in-One-SEO erfüllen Ihre Anforderungen? Ich habe tatsächlich die “Pro”-Version für etwa 30 USD gekauft und es hat sich gelohnt.
Leider nicht. Es scheint keine URLs umzuschreiben.
– Sonnenseite
23. März 2010 um 15:08 Uhr
Meine WordPress-Installation (2.9.2) macht das automatisch – kanonische URLs sind seit einiger Zeit in WordPress eingebaut. Vielleicht ist Ihr Plugin Deaktivieren dieser Funktion?
Nein, definitiv nicht. (Wenn Sie hinzufügen <?php echo 'http://localhost/?cat=17&paged=5'; ?> – oder einen ähnlichen Link – irgendwo in Ihrem Thema sehen Sie das Problem.)
– Sonnenseite
23. März 2010 um 15:05 Uhr
Ich habe das gerade mit meinem Theme ausprobiert, und WordPress hat die URL richtig interpretiert und mich gemäß meinen Permalink-Einstellungen auf die richtige Seite weitergeleitet. Verwenden Sie 2.9.2?
– Schiffsform
24. März 2010 um 1:38 Uhr
Vielleicht verstehe ich Ihr Problem falsch – wenn Sie die URL nur als Zeichenfolge wiedergeben, wird WordPress nichts damit anfangen. Aber wenn Sie es zu einem Link machen und darauf klicken, sollten Sie auf die richtige Seite weitergeleitet werden.
– Schiffsform
24. März 2010 um 1:43 Uhr
Die Umleitung ist nicht das Problem, das Problem ist die Tatsache, dass es hässlich aussieht. 🙂
– Sonnenseite
2. Mai 2010 um 22:25 Uhr
Setzen Sie die gewünschte Seitenzahl in eine Variable namens $pagenumber und versuchen Sie Folgendes: “>Category Link
– Schiffsform
2. Mai 2010 um 23:38 Uhr
jtlowe
Ich vermute, Sie haben es bereits herausgefunden, aber ich wollte es nur für andere veröffentlichen. Ich glaube ich verstehe deine Situation. Wenn ich Ihre Frage richtig gelesen habe, gilt das Ändern der Admin-Permalink-Einstellungen nicht.
Sie können die Kategorie-ID dann verwenden get_category_link() Funktion, um den ‘hübschen’ Permalink zu erhalten. Fügen Sie dann die Paginierung an das Ende an.
Sie könnten den Permalink auflösen, um die Kategorie-ID und die Paginierungsnummer zu erhalten, und dann den obigen Schritt verwenden, um sie zusammenzusetzen.
Können Sie diese nicht einfach im Permalink-Optionsfeld ändern? Wenn Sie „Benutzerdefiniert“ auswählen und /%postname%/ eingeben, wird dies ähnlich wie bei Ihnen generiert, es sei denn, dieses Plugin ändert die URLs irgendwie?
– Martin
22. März 2010 um 10:55 Uhr
Ich fürchte, ich komme nicht auf den Punkt. Mein Plugin weiß nichts über die vom Benutzer eingestellte Permalink-Struktur. Im Moment kann ich die Seite, zu der ich einen Link erstelle, nur über die Kategorie-ID und die Seitennummer ansprechen. Was ich suche, ist eine Art Filter, der diese generierte URL in die vom Benutzer konfigurierte Struktur ändert.
– Sonnenseite
22. März 2010 um 17:55 Uhr
Es gibt eine Einstellung in der Verwaltung->Einstellungen->Permalinks
– Benutzer177800
22. März 2010 um 18:26 Uhr
@fuzzy lollipop: Ich kenne diese Einstellung und das möchte ich erreichen. Nun stellt sich die Frage: Wie macht WordPress das, wo steckt die Magie und wie kann ich sie für mich (missbrauchen)? 🙂
– Sonnenseite
23. März 2010 um 15:11 Uhr