WordPress-Permalinks, die Name und ID enthalten, aber nur die ID berücksichtigen

Lesezeit: 3 Minuten

Benutzer-Avatar
Wladimir

Ich habe eine WordPress-Site und möchte die Art und Weise nachahmen, wie bestimmte Nachrichtenagenturen und Portale ihre URLs generieren.

Beispiel: Sie haben einen Artikel namens „Man Loves Woman“, und die CMS-Software erstellt eine URL wie diese:

https://example.com/man-loves-woman/55123

Bei dem die 55123 ist die echte ID des Artikels, also

https://example.com/man-does-not-love-woman/55123

wird den gleichen Artikel zurückgeben, solange die echte ID, 55123, wird nicht verändert. Egal welche Reihenfolge möglich ist, oder? %postname%/%id% oder %id%/%postname%

Im Moment habe ich eine benutzerdefinierte Permalink-Einstellung:

/%postname%/%year%%monthnum%%day%

Ich bin nicht besonders glücklich darüber, ich hätte es gerne /%postname%/%unique_id% wo %postname% wird standardmäßig so generiert, aber es spielt keine Rolle, was sein Wert ist, da die %unique_id% ist unveränderlich.

Ich schaue zu wp-includes/link-template.php und rewrite.phpaber ich bin nicht sehr versiert in PHP, aber wenn mich jemand in die richtige Richtung weisen kann, wäre ich dankbar, ich habe ein grundlegendes Verständnis dafür, wie das alles funktioniert, mit einem richtigen Schubs könnte ich weitermachen und es herausfinden mein eigenes.

Vielleicht sehe ich das alles falsch und sollte mich auf Nginx dahinter konzentrieren und eine Rewrite-Regel einrichten, die die %postname% was alles sein kann und einfach den Standard in den WordPress-Permalink-Einstellungen verwenden, der Folgendes erzeugt:

https://example.com/?p=123

Benutzer-Avatar
Hujjat Nazari

Wenn Sie die eindeutige ID des Beitrags nach seinem Namen anzeigen möchten, können Sie dies über tun Custom Structure in den WordPress Permalink-Einstellungen, indem Sie diese Struktur hinzufügen.

/%postname%/%post_id%

Es funktioniert nicht auf localhost, aber es funktioniert auf der Online-Website.

Geben Sie hier die Bildbeschreibung ein

  • Ja, ich verwende bereits die benutzerdefinierte Struktur, aber ich möchte sicherstellen, dass „%postname%“ richtig generiert wird, aber alles sein kann, und dass die Engine „%post_id%“ als eigentlichen Weg zum Abrufen des Artikels verwendet fraglich.

    – Wladimir

    21. November 2014 um 9:44 Uhr

  • Deine Antwort war die richtige. Die von Anand bereitgestellte Lösung funktionierte nicht. Es ist eigentlich ein bisschen seltsam, es war ein Wurf undefined function Fehler in den Protokollen für die Funktion add_action. Ich hätte erwähnen sollen, dass ich WP 4.0 verwende, vielleicht haben sie einige Dinge herumgemischt. Wie auch immer, danke, die Lösung war schmerzlich einfach. 🙂

    – Wladimir

    21. November 2014 um 18:20 Uhr

Sie müssen nachsehen add_rewrite_rule. Fügen Sie den folgenden Code functions.php hinzu

add_action( "init", "so_27051693_permalink" );
function so_27051693_permalink() {

    //This rule will match : man-loves-woman/55123
    add_rewrite_rule(        
        '^([^/]*)/([0-9]+)/?',        
        'index.php?p=$matches[2]',        
        'top' );

   //This rule will match : 55123/man-loves-woman
    add_rewrite_rule(        
        '^([0-9]+)/([^/]*)/?',        
        'index.php?p=$matches[1]',        
        'top' );

}

In beiden Fällen wird der Beitrag mit post_id abgerufen. Stellen Sie sicher, dass Sie die Umschreibungsregeln löschen, indem Sie Ihre Permalinks erneut speichern.

  • Anand, danke für die Hilfe, antwortete ich und akzeptierte Hujjat unten. Dies war vielleicht für ältere Versionen von WP notwendig, aber anscheinend bekomme ich mit der %post_id% genau das, was ich will. Danke trotzdem!

    – Wladimir

    21. November 2014 um 18:21 Uhr

1091200cookie-checkWordPress-Permalinks, die Name und ID enthalten, aber nur die ID berücksichtigen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy