Ich habe einen Blog mit mehreren Seiten in einer Kategorie "Projekte", die wie folgt strukturiert / benannt sind:
- / projects / project-2012
- / projects / project-2013
- / projekte / projekt-2014
- / projects / project-2015
Wenn ein Benutzer URLs wie http://myblog.com/project oder sogar http://myblog.com/proje eingibt, wird er auf die Seite / projects / project-2012 umgeleitet . (Mit einem 301 dauerhaft bewegt!)
Ich möchte, dass WordPress URLs, die zu einer klar definierten Seite führen (z. B. http://myblog.com/?p=123 ), in die kanonische Form umwandelt. Ich möchte jedoch nur die automatische Vervollständigung der URL für "unklare" URLs deaktivieren kann auf mehrere Seiten verweisen.
Meine Frage ist: Wie kann ich das erreichen?
Ich habe auch recherchiert ...
Die akzeptierte Antwort auf die Frage " Automatische Vervollständigung der Wordpress-URL deaktivieren" deaktiviert das gesamte kanonische URL-System. Das ist für mich nicht akzeptabel.
Vor ungefähr vier Jahren tauchte so etwas im Wordpress-Bug-Tracker auf: https://core.trac.wordpress.org/ticket/8948 Während einige gute Lösungen (wie das Anbieten einer Seite "Wir haben Ihre URL nicht gefunden. Aber Sie waren es) Vielleicht auf der Suche nach einer der folgenden Seiten? ") wurden dort besprochen, das Ticket wurde am Ende geschlossen.
EDIT: Es gibt tatsächlich ein neueres Ticket unter https://core.trac.wordpress.org/ticket/16557, das genau das abdeckt, was ich brauche. Es scheint für die Version 4.0 vorgesehen zu sein. Und die Ticketkommentare enthalten auch eine Lösung (siehe unten).
Antworten:
Okay, nachdem ich ein bisschen mehr gesucht hatte, fand ich endlich eine Antwort auf meine eigene Frage, die in einem Kommentar zu diesem Feature-Request-Ticket versteckt war: https://core.trac.wordpress.org/ticket/16557 Der Benutzer nacin schlug vor, diesen Code zu verwenden:
Wenn Sie dies zu einer neuen Plugin-PHP-Datei hinzufügen (zum Beispiel in wp-content / plugins / disable-url-autocorrect-erraten.php), haben Sie ein nettes Plugin, das Sie aktivieren können, um die automatische Korrekturfunktion von Wordpress zu deaktivieren .
Um Ihnen die Mühe zu ersparen, habe ich dies tatsächlich getan und mein Plugin bei Wordpress.org eingereicht. Sobald es dort überprüft wurde, sollten Sie es hier herunterladen können: https://wordpress.org/plugins/disable-url-autocorrect-guessing/
Während dies eine funktionierende Lösung ist, ist der vorgeschlagene Code ein Hack. Sobald die Funktionsanforderung in https://core.trac.wordpress.org/ticket/16557 tatsächlich implementiert ist, gibt es viel bessere Lösungen dafür sowie eine viel bessere Kontrolle darüber, wie das Raten tatsächlich durchgeführt werden sollte.
quelle
remove_filter()
. Aber jetzt nur einen bestimmten Fall umgehen, in dem ich Probleme habe. Nur für den Fall, dass sich jemand für mein Problem interessiert: wordpress.stackexchange.com/questions/307670/…Leider
redirect_canonical()
gibt es mehr als 400 Codezeilen (und wächst von Release zu Release), die nicht besonders strukturiert sind, um nach Zweck gesteuert zu werden. Es ist alles oder nichts, was nicht flexibel konfiguriert werden kann.Aus praktischer Sicht sind Ihre besten Optionen:
template_redirect
.redirect_canonical
Es ist nicht wünschenswert, die Umleitung als Hook zu verhindern, wenn das Ziel erreicht wurde.In beiden Fällen müssen Sie die Logik entwickeln, die genau eine unerwünschte Weiterleitung bewirkt.
quelle
redirect_guess_404_permalink()
und macht keine solche Unterscheidung, sondern nimmt nur die erste Übereinstimmung, die SQL erzeugt :(