Wie kann ich Permalinks in Großbuchstaben (Großbuchstaben) erstellen?

7

Wie kann ich einen solchen Link erstellen?

http://www.lifecellskin.us/Dev/About

Im Teil "Using_Permalinks" ist A ein Großbuchstabe. WP konvertiert jedoch automatisch Groß- und Kleinschreibung.

Ich versuche, eine alte Site, die nur von HTML erstellt wurde, in eine WP-Plattform-Site zu konvertieren. Einige Links zur Website sehen folgendermaßen aus:

http://www.lifecellskin.us/About

Die Seite ist bereits von SEO indiziert. Ich möchte also keine SE-Rangliste verlieren.

Vielen Dank für das Lesen und hoffen, dass jemand etwas Licht ins Dunkel bringen kann ...

Shalu
quelle

Antworten:

8

Die Seiten-URLs werden durch die Slugs definiert und standardmäßig von der Funktion formatiert und in Kleinbuchstaben geschrieben sanitize_title_with_dashes(). Diese Funktion wird jedoch über einen Filter aufgerufen, und Sie können den Filter aushängen , damit er nicht aufgerufen wird:

remove_filter( 'sanitize_title', 'sanitize_title_with_dashes' );

Dies zu tun ist wahrscheinlich keine gute Idee, da dadurch die Leerzeichen und andere seltsame Dinge in der Schnecke nicht entfernt werden. Ich schlage vor, Sie kopieren die vorhandene Funktion, entfernen den Teil, der sie in Kleinbuchstaben schreibt, und schließen sie erneut an:

add_filter( 'sanitize_title', 'wpse5029_sanitize_title_with_dashes' );
function wpse5029_sanitize_title_with_dashes($title) {
    $title = strip_tags($title);
    // Preserve escaped octets.
    $title = preg_replace('|%([a-fA-F0-9][a-fA-F0-9])|', '---$1---', $title);
    // Remove percent signs that are not part of an octet.
    $title = str_replace('%', '', $title);
    // Restore octets.
    $title = preg_replace('|---([a-fA-F0-9][a-fA-F0-9])---|', '%$1', $title);

    $title = remove_accents($title);
    if (seems_utf8($title)) {
        //if (function_exists('mb_strtolower')) {
        //    $title = mb_strtolower($title, 'UTF-8');
        //}
        $title = utf8_uri_encode($title, 200);
    }

    //$title = strtolower($title);
    $title = preg_replace('/&.+?;/', '', $title); // kill entities
    $title = str_replace('.', '-', $title);
    // Keep upper-case chars too!
    $title = preg_replace('/[^%a-zA-Z0-9 _-]/', '', $title);
    $title = preg_replace('/\s+/', '-', $title);
    $title = preg_replace('|-+|', '-', $title);
    $title = trim($title, '-');

    return $title;
}
Jan Fabry
quelle
Nur eine blöde Frage, warum stellen Sie Ihren Funktionen wpse {anynumber} voran?
Horttcore
1
@Horttcore: wpse5029 wie WP Stack Exchange Frage # 5029?
Denis de Bernardy
4
@Horttcore: In der Tat stelle ich allen meinen Funktionsnamen die Fragennummer voran. Es wpseNNNNist wahrscheinlich einzigartig , sie selbst als separate Plugins auszuprobieren und falls jemand sie in seinen eigenen Code kopiert, ohne sie zu ändern .
Jan Fabry
Ah das macht für mich Sinn :-)
Horttcore
1
Das ist cool! +1 für das Smart-Präfix.
Kaiser
6

Ich würde wirklich empfehlen, dass Sie sich an die von WordPress verwendeten Kleinbuchstaben-URLs für Ihre Website halten (ich halte Kleinbuchstaben-URLs sowieso für eine bewährte Methode), aber 301 Weiterleitungen für alle URLs einrichten, für die Sie dieses Problem haben. Ich finde, es endet normalerweise mit Schmerzen, wenn Sie versuchen, eine Plattform zu bekämpfen, um zu verhindern, dass sie das tut, was sie will, und URL-Strukturen sind wirklich in die Architektur von WordPress eingebettet.

Ich habe eine andere Antwort geschrieben, die Ihren Anforderungen sehr ähnlich 'template_redirect'ist. Dieses Beispiel kann Ihnen zeigen, wie Sie mithilfe des Hooks eine Umleitung für diese URLs einrichten. Hier haben Sie dieses Problem:

Wenn Sie weitere Informationen wünschen, fragen Sie bitte.

MikeSchinkel
quelle
1

Soweit ich weiß, unterscheiden Suchmaschinen nicht zwischen Groß- und Kleinschreibung, obwohl URLs zwischen Groß- und Kleinschreibung unterscheiden. Ich würde empfehlen, das großgeschriebene Dateiformat loszuwerden, da es für Benutzer schwer zu merken ist.

Wenn Sie wirklich an der vorherigen Struktur festhalten möchten, müssen Sie mit regulärem Ausdruck (reguläre Ausdrücke) in der .htaccess-Datei arbeiten.

superUntitled
quelle