it-swarm.com.de

Das Entfernen von/author/slug aus der URL ergibt 404

Nach stundenlangem Suchen und Ausprobieren verschiedener Funktionen habe ich es endlich geschafft,/author/von allen Profil-URLs unserer Benutzer zu entfernen. Also ist es nur/Benutzername /

Wenn jedoch neue Benutzer ihre Profil-URLs registrieren, geben alle 404-Werte an. Ich kann das beheben, indem ich in den Permalinks-Bildschirm gehe und auf Speichern klicke, aber wir registrieren viele Benutzer und ich kann das nicht für jeden tun.

Dies ist die Funktion, die ich benutze ... Irgendwelche Ideen !?

Vielen Dank!

    add_filter('author_rewrite_rules', 'no_author_base_rewrite_rules');
function no_author_base_rewrite_rules($author_rewrite) {
   global $wpdb;
   $author_rewrite = array();
   $authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users");   
   foreach($authors as $author) {
       $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
       $author_rewrite["({$author->nicename})/?$"] = 'index.php?author_name=$matches[1]';
   }  
   return $author_rewrite;
}

if( !is_admin() ) {
add_action('init', 'author_rewrite_so_22115103');
}

function author_rewrite_so_22115103() {
   global $wp_rewrite; 
   if( 'author' == $wp_rewrite->author_base ) $wp_rewrite->author_base = null;
}
1
js111

Du machst es einfach falsch. Durch das Hinzufügen einer Umschreiberegel pro Benutzer wird nur die Umschreibetabelle aufgebläht und der URL-Parsing-Prozess verlangsamt. Sie müssen eine generische Umschreiberegel ausarbeiten, die für alle Benutzer funktioniert, oder eine alternative URL-Analyse mit dem Filter 'do_parse_request' schreiben.

Ihr Hauptproblem ist, dass Ihre URL-Struktur, wie sie jetzt ist, mit der URL-Struktur von Posts/Categories/etc "kollidiert". Der beste Weg ist, einfach ein konstant vorhersagbares Präfix für Ihre Benutzer-URLs zu verwenden, ansonsten vielleicht nur so etwas wie /user/{user login}/... Bei einer Site mit vielen Benutzern ist es eine vernünftige Option, das Parsen selbst durchzuführen.

1
Mark Kaplun

Fügen Sie dies auch in der Nähe der beiden anderen hinzu, um die Feeds ebenfalls umzuleiten:

$author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = 'index.php?author_name=$matches[1]&paged=$matches[2]';
0

author_rewrite_rules wird nur aufgerufen, wenn WordPress die Umschreiberegeln neu generieren muss. Sie müssen WordPress also einen Grund geben, dies zu tun. Das Speichern auf der Permalinkseite ist eine Möglichkeit. Eine andere Möglichkeit wäre, sich in die Aktion user_register einzuhängen, die direkt nach dem Erstellen eines neuen Benutzers aufgerufen wird. Rufen Sie in Ihrer Handlerfunktion flush_rewrite_rules() auf.

0
Dave Ross