it-swarm.com.de

Deaktivieren Sie NUR die automatische Vervollständigung der URL, nicht das gesamte kanonische URL-System

Ich habe ein Blog mit mehreren Seiten in einer Kategorie "Projekte", die wie folgt strukturiert/benannt sind:

  • / projects/project-2012
  • / projects/project-2013
  • / projects/project-2014
  • / projects/project-2015

Wenn ein Benutzer URLs wie http://myblog.com/project oder sogar http://myblog.com/proje eingibt, ist er/sie es Weitergeleitet auf die Seite / projects/project-2012. (Mit einem 301 dauerhaft umgezogen!)

Während 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, möchte ich nur die deaktivieren Automatische URL-Vervollständigung für "unklare" URLs, die möglicherweise auf mehrere Seiten verweisen.

Meine Frage ist: Wie kann ich das erreichen?


Ich habe auch ein paar Nachforschungen angestellt ...

  • Die akzeptierte Antwort auf die Frage Wordpress-URL automatisch vervollständigen deaktivieren deaktiviert das gesamte kanonische URL-System. Das ist für mich nicht akzeptabel.

  • Vor ungefähr vier Jahren tauchte so etwas auf dem Wordpress-Bugtracker 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 haben Sie vielleicht eine der folgenden Seiten gesucht? ") Wurden dort besprochen, das Ticket wurde am Ende geschlossen.

  • BEARBEITEN: 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 bestimmt zu sein. Die Ticketkommentare enthalten auch eine Lösung (siehe unten).

8
Hauke P.

Okay, nachdem ich ein bisschen weiter gesucht hatte, fand ich schließlich 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, benutze diesen Code:

function remove_redirect_guess_404_permalink( $redirect_url ) {
    if ( is_404() )
        return false;
    return $redirect_url;
}

add_filter( 'redirect_canonical', 'remove_redirect_guess_404_permalink' );

Wenn Sie dies zu einer neuen Plugin-PHP-Datei hinzufügen (zum Beispiel in der Datei wp-content/plugins/disable-url-autocorrect-guessing.php), haben Sie ein Nizza-Plugin, das Sie aktivieren können, um die automatische "Raten" -Funktion 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/


Obwohl dies eine funktionierende Lösung ist, handelt es sich bei dem vorgeschlagenen Code um einen Hack. Sobald die Funktionsanforderung in https://core.trac.wordpress.org/ticket/16557 implementiert ist, wird es bessere Lösungen dafür sowie eine viel bessere Kontrolle darüber geben, wie das Raten tatsächlich durchgeführt werden soll .

10
Hauke P.

Leider enthält redirect_canonical() mehr als 400 Codezeilen (und wächst von Release zu Release), die nicht speziell strukturiert sind, um von Zweck zu Zweck gesteuert zu werden. Es ist alles oder nichts, was nicht flexibel konfiguriert werden kann.

Aus praktischer Sicht sind Ihre besten Optionen:

  1. Manuelle Weiterleitung unter template_redirect.
  2. Es ist nicht wünschenswert, die Weiterleitung als redirect_canonical hook zu verhindern, wenn ein Ziel gefunden wurde.

In beiden Fällen müssen Sie die Logik von was genau unerwünschte Weiterleitung entwickeln.

0
Rarst