Anpassen des benutzerdefinierten Post-Typ-Permalinks

Ich verstehe, wie man einen benutzerdefinierten Post-Typ registriert, den Slug anpassen und entscheiden kann, ob man die ‘Front’ (die WP-Permalink-Einstellungen) hinzufügt oder nicht.

Ich möchte den Permalink anpassen, indem ich hinzufüge

?username 

Am Ende der URL des benutzerdefinierten Post-Typs. Jetzt weiß ich, dass der bereinigte Autorenname in den WP-Permalink-Einstellungen hinzugefügt werden kann, aber das möchte ich nicht – ich suche nach dem Benutzernamen, mit dem ich mich anmelde.

Beispiel: Ich erstelle einen benutzerdefinierten Post-Typ namens “Home” (singular) mit dem benutzerdefinierten Slug “homes”. Die URL wäre:

www.mydomain.com/homes/postname

Ich möchte, dass die URL stattdessen folgendermaßen aussieht:

www.mydomain.com/homes/postname?username

Ich bin mir nicht sicher, wie das geht, indem ich die übliche Methode zur Registrierung eines Inhaltstyps ändere:

 add_action( 'init', 'create_posttype' ); function create_posttype() { register_post_type( 'home', array( 'labels' => array( 'name' => __( 'Homes' ), 'singular_name' => __( 'Home' ) ), 'public' => true, 'has_archive' => true, 'rewrite' => array('slug' => 'homes'), ) ); } 

Ich habe ein bisschen experimentiert und letztendlich meine Seite komplett unzugänglich gemacht, also entschied ich, dass es hilfreich wäre, nach etwas zu fragen: P

Solutions Collecting From Web of "Anpassen des benutzerdefinierten Post-Typ-Permalinks"

Hinweis für Kuratoren / Admin: Ich wollte einen Kommentar hinterlassen, aber ich hatte nicht genug Ansehen. Ich weiß, dass ich keine formelle Antwort gebe, sondern versuche, dem Fragesteller zu helfen.

Verwenden Sie Mitgliedschafts-Plugins? Können Sie uns ein wenig mehr Informationen über die gesamte Sitemap und die functionalität geben? Wir sehen ein sehr enges Feld einer größeren Frage zu bewerten.

Sie sind auf dem richtigen Weg mit dem benutzerdefinierten Post-Typ, aber ich denke, es gibt einen besseren Weg, um über die Situation zu gehen.

Ich werde von Ihrem Code Beispiel annehmen, dass Sie ein gutes Verständnis von PHP / WordPress Codex haben, um am besten zu erklären, was ich sagen möchte, wäre die beste Idee hier.

Ein praktischerer Ansatz zum Generieren öffentlicher Benutzerprofilseiten wäre eine steuernde Designfunktion wie /profile/ , die relevante Benutzerinformationen abruft. Von dort aus würden Sie Berechtigungen für jede Profilseite an den Benutzer übergeben, der sich anmelden und seine Informationen entweder über das WordPress-Dashboard bearbeiten muss. Oder Benutzer füllen Profilinformationen von einer anderen Front-End-Seite aus, die die öffentliche Seite einspeist.

Wenn Sie beim Schreiben von benutzerdefinierten Beitragstypen verwirrt sind, sollten Sie eine schlüsselfertige Lösung installieren. Ohne irgendwelche Markennamen zu erwähnen, gibt es viele existierende (und kostenlose) Mitglieder-Plugins, die dem Benutzer ein öffentliches Profil + Kontoverwaltungsbereich geben.

Um post_link hinzuzufügen, um post_link zu posten, sollten Sie den post_link Filter in Kombination mit der function add_query_arg verwenden.

 add_filter( 'post_link', 'cyb_append_query_string', 10, 3 ); function cyb_append_query_string( $url, $post, $leavename ) { //Change for the post type you want if ( $post->post_type == 'home' ) { $url = add_query_arg( 'username', 'username_value', $url ); } return $url; } 

Wenn Sie dieses Abfrageargument in wp_query verwenden möchten, sollten Sie auch den query_vars Filter query_vars :

 add_filter( 'query_vars', 'cyb_query_vars' , 10, 1 ); function cyb_query_vars( $qvars ) { $qvars[] = 'username'; return $qvars; } 

Jetzt können Sie den username Abfrage var wie username abrufen:

  $username = get_query_var( 'username' ); //Or, if working with a WP_Query object $username = $wp_query->get( 'username' );