Front-End-Login: Leiten Sie den Benutzer zu dem von Ihnen erstellten Post um

Ist es möglich, einen Benutzer am Front-End-Login zu einem von ihm erstellten Post umzuleiten?

Ich habe das Formular unten auf der Vorderseite, das funktioniert großartig, um Leute einzuloggen, erreicht aber nicht ganz das, was ich will.

Ich habe einen Front-End-Registrierungsprozess erstellt, der einen neuen Benutzer und einen Post erstellt und bestimmte Details in diesen Post einfügt. Nach Abschluss dieses processes werden sie an den Post gesendet, den sie gerade erstellt haben, was ihnen erlaubt, alle Details im Frontend zu bearbeiten. Das funktioniert perfekt für Erstanmelder, aber mit Leuten, die sich bereits angemeldet haben und sich anmelden wollen, kann ich nicht ganz das erreichen, was ich will.

Wenn sie ihre Daten in das unten stehende Formular eingeben, möchte ich, dass sie auf den Post umleitet, den sie bei ihrer Registrierung erstellt haben. Ist das möglich?

Die Benutzer können immer nur EINEN Beitrag erstellen, der als Profil fungiert. Ich möchte, dass sie sich einloggen und zu ihrem Profil weitergeleitet werden können.

Wenn es hilft, ist der Benutzername derselbe wie der Titel des Beitrags (der Benutzername ist der Name der Person des Unternehmens, der auch der Name des Beitrags ist).

 <form action="https://wordpress.stackexchange.com/questions/87806/front-end-login-redirect-user-to-the-post-they-had-created//wp-login.php" method="post" id="login-form"> 

Please login.

<input type="text" placeholder="Username" name="log" id="log" value="" /> <!-- <!--

Remember me

<input type="hidden" name="redirect_to" value="" />

<a style="font-size:14px!IMPORTANT;" href="https://wordpress.stackexchange.com/questions/87806/front-end-login-redirect-user-to-the-post-they-had-created//wp-login.php?action=lostpassword">Recover password

You are currently logged in, would you like to <a href="https://wordpress.stackexchange.com/questions/87806/front-end-login-redirect-user-to-the-post-they-had-created/">logout?

Ich vermute das folgende …

Ich muss etwas mit dem Benutzernamen tun (im obigen Formular eingegeben) und dann mit dem Autor der Beiträge abgleichen, wenn das stimmt, dann sende sie auf diese Seite … alles vor der Einreichung des obigen Formulars. Dies muss vor dem versteckten Feld geschehen, damit das Feld Benutzername in den versteckten Eingabewert eingegeben werden kann.

Solutions Collecting From Web of "Front-End-Login: Leiten Sie den Benutzer zu dem von Ihnen erstellten Post um"

Wenn ich Sie wäre, würde ich die wp_login_form -function verwenden, um Ihr Formular zu erstellen, aber es sieht so aus, als ob Sie alles richtig gemacht haben, und vielleicht haben Sie einen guten Grund, ein manuelles Formular zu verwenden.

 < ?php wp_login_form(); ?> 

In beiden Fällen können Sie diese Aktion verwenden, um die Login-Weiterleitung zu aktualisieren, indem Sie sie zu functions.php hinzufügen:

 add_action( 'login_redirect', 'custom_redirect_login', 10, 3 ); function custom_redirect_login( $redirect_to, $request, $user ) { $posts = get_pages( array( 'authors' => $user->ID ) ); if (! empty($posts) ) { // Since the pages are listed in DESC order, the first one is the most // recently created. return get_permalink($posts[0]->ID); } else { // If no posts associated with the user, use default. return $redirect_to; } } 

Wie bereits erwähnt, müssen Sie, wenn Sie zu einer Post oder einem custom_post_type anstelle einer Seite redirect müssen, eine nicht-page-spezifische Methode verwenden. Dies ist möglicherweise besser, da sie universeller funktioniert:

 function custom_redirect_login( $redirect_to, $request, $user ) { $posts = new WP_Query( array( 'author' => $user->ID ) ); if ($posts->have_posts()) { // Since the pages are listed in DESC order, the first one is the most // recently created. return get_permalink($posts->posts[0]->ID); } else { // If no posts associated with the user, use default. return $redirect_to; } } 

Der Artikel, der erstellt wird und die Informationen speichert, ist eine “Seite” oder ein “Beitrag”.

Wenn es ein “post” get_pages im Filter in der vorherigen Antwort wäre, würde nicht funktionieren (es werden nur Artikel mit einem Post-Typ von “Seite”). Probieren Sie diesen Filter aus.

 function custom_redirect_login( $redirect_to, $request, $user ) { $posts = new WP_Query( 'author='.$user->ID ); if ($posts->have_posts()) { // Since the pages are listed in DESC order, the first one is the most // recently created. return get_permalink($posts->posts[0]->ID); } else { // If no posts associated with the user, use default. return $redirect_to; } } 

Dies funktioniert derzeit, aber es fühlt sich ein bisschen schmutzig an! Wenn es einen besseren Weg gibt, würde ich lieber damit fortfahren.

  < ?php if (!(current_user_can('level_0'))){ ?> 

Please login.

Remember me

Recover password

< ?php } else { ?>

You are currently logged in, would you like to logout?

< ?php } ?>

Vielleicht kannst du hier eine Antwort in meiner Frage finden: Wie bekomme ich User-Meta von Social Login registrierten Usern?

Ich benutze Gravityforms, damit Benutzer nur eine Seite aus dem Front-End erstellen (indem sie page.php als Vorlage verwenden) und sie nach der Einreichung auf ihre neu erstellte Seite verweist. (alle eingebauten Gravityforms-Einstellungen außer der function zum Erstellen einer Seite, aber Sie können sie in meinem Link finden)

Aber wenn Benutzer zurückkommen, möchte ich, dass sie eine Willkommensnachricht mit einem Link zu ihrer Seite anstelle des Formulars zeigen (daher füllen sie das Formular nur einmal aus)

Es funktioniert gut für Benutzer, die von Admin über das Admin-Dashboard registriert wurden. Aber es funktioniert nicht für Benutzer, die über Social Login Plugins registriert sind. (darum geht es in meiner Frage)

So könnte ein Teil der Frage hinter meinem Link Ihre Antwort sein, aber wenn Sie möchten, dass sich Nutzer über das soziale Login anmelden, sollten Sie auch die Antwort auf meine Frage finden. 😉

Ich hoffe, es hilft.