it-swarm.com.de

Ändern der Verzeichnis- und/oder URL-Struktur

Ich bin gespannt, ob es möglich (und ratsam) ist, bestimmte Verzeichnisnamen und URL-Strukturen durch Anpassung nach Themen oder Plugins zu ändern. Angenommen, ich möchte, dass die Liste aller Beiträge eines Benutzers unter blog.com/people/username und nicht unter blog.com/author/username angezeigt wird. Ist dies über die Anpassung möglich? Wenn ja, wäre diese Art der Anpassung sehr problematisch, wenn es um die Abwärtskompatibilität mit den neuesten WP Updates und dergleichen geht?

Jeder Rat, den jemand dazu geben kann, wäre sehr dankbar.

Vielen Dank.

Eddie

3
Eddie

Die Antwort von @kureikain sieht gut aus und funktioniert wahrscheinlich unter den verschiedensten Umständen sehr gut.

Für Autoren-URLs gibt es jedoch einen einfacheren Weg. Ändern Sie die author_base wie folgt:

global $wp_rewrite;
$wp_rewrite->author_base = "people";
$wp_rewrite->flush_rules();

Sie sollten dies nur einmal ausführen müssen, möglicherweise bei einer Plugin-Aktivierung. Das Aktualisieren von WordPress sollte diese Lösung nicht beeinträchtigen.

EDIT Wie @Jan in den Kommentaren betont hat, müssen Sie dies bei jedem Init ausführen. Sie müssen die Regeln jedoch nur einmal löschen.

4
MathSmath

Sie können den Filter generate_rewrite_rules verwenden, um eine neue benutzerdefinierte URL hinzuzufügen! Als erstes fügen Sie einen Filter hinzu, um eine URL zu erstellen! Zweitens fügen Sie eine neue Funktion hinzu, um diese URL zu verarbeiten (in diesem Fall WordPress-Profil anzeigen).

add_filter('generate_rewrite_rules', 'axcoto_multi_rate_rewrite');
function axcoto_multi_rate_rewrite(&$wp_rewrite) {
    $wp_rewrite->rules = array_merge(array('people/([^/]*)$' => 'index.php?pagename=people&username=$matches[1]'), $wp_rewrite->rules);
    return $wp_rewrite;
}

Wenn jemand zu people/kureikain geht, wird es durch WordPress zu index.php? Seitenname = people & Benutzername = kureikain. Dann erstellen Sie eine neue Seite und richten sie an die Leute! Als nächstes erstellen Sie eine neue benutzerdefinierte Seitenvorlage, um dieses Profil anzuzeigen!

Außerdem fügen wir dem obigen Code eine neue Abfragevariable, einen Benutzernamen, hinzu! Wir müssen WordPress darüber informieren

add_filter('query_vars', 'axcoto_multi_rate_query_vars');
function axcoto_multi_rate_query_vars($public_query_vars) {
    $public_query_vars[] = 'username';
    return $public_query_vars;
}

In Ihrem Code müssen Sie $ username = get_query_var ('username') aufrufen, um den Benutzernamen zu erhalten. Das ist alles!

0
kureikain

Meiner Meinung nach müssen Sie nur die Autorenbasis ändern, die dieses Plugin für Sie erledigt (im Grunde das Gleiche wie bei MathSmath, aber in einer verherrlichten Plugin-Form).
http://wordpress.org/extend/plugins/custom-author-base/

0
t31os