it-swarm.com.de

Erstellen einer benutzerdefinierten öffentlichen Benutzerseite

Ich möchte ein Plugin entwickeln, mit dem ich benutzerdefinierte Benutzerseiten erstellen kann. Mir gefällt die Art und Weise, wie die Autorenarchivvorlage mit der URL umgeht:/author/username. Ich möchte den author_base nicht umschreiben, da ich diese Funktionalität unangetastet lassen möchte.

Ich möchte dieses saubere URL-Layout in meinem Plugin replizieren, sodass ein Benutzer, der zu/users/username wechselt, zu meiner benutzerdefinierten Vorlage wechselt. Ich würde gerne wissen, ob jemand Beispiele dafür hat, wie man den Benutzernamen von der URL richtig analysiert, damit ich die Daten des Benutzers über das Plugin nachschlagen und meine Vorlage anzeigen kann.

4
Pat

Ich habe die Antwort auf diese Frage von @bybloggers Antwort hier gefunden. https://wordpress.stackexchange.com/a/58793/12920

Ich habe seinen Code leicht modifiziert, um ihn an meine Bedürfnisse anzupassen, aber dies ist der Code, der für mich funktioniert hat und genau das war, wonach ich gesucht habe:

// Create the query var so that WP catches the custom /member/username url
function userpage_rewrite_add_var( $vars ) {
    $vars[] = 'member';
    return $vars;
}
add_filter( 'query_vars', 'userpage_rewrite_add_var' );

// Create the rewrites
function userpage_rewrite_rule() {
    add_rewrite_tag( '%member%', '([^&]+)' );
    add_rewrite_rule(
        '^member/([^/]*)/?',
        'index.php?member=$matches[1]',
        'top'
    );
}
add_action('init','userpage_rewrite_rule');

// Catch the URL and redirect it to a template file
function userpage_rewrite_catch() {
    global $wp_query;

    if ( array_key_exists( 'member', $wp_query->query_vars ) ) {
        include (TEMPLATEPATH . '/user-profile.php');
        exit;
    }
}
add_action( 'template_redirect', 'userpage_rewrite_catch' );

Nachdem dies in meiner functions.php Datei war, musste ich meine Permalinks neu speichern.

Manchmal konnte das erneute Speichern der Permalinks den Job nicht zu 100% beenden und das Navigieren zu www.meinesite.com/member/benutzername 404 führte dazu, dass ich die Regeln manuell löschen musste, indem ich sie in meinen functions.php einfügte und meine Site einmal lud. Entfernen Sie es dann, damit es nicht jedes Mal ausgeführt wird, wenn die Site geladen wird, da dies unnötigen Aufwand bedeutet.

// Code needed to finish the member page setup
function memberpage_rewrite() {
     global $wp_rewrite;
     $wp_rewrite->flush_rules();
}
add_action('init','memberpage_rewrite');
4
Pat