Für Menschen · Seien Sie begeistert und Sie werden begeistern !
Wer seinen WordPress-Weblog so einstellt, dass neue User sich registrieren können, der ist vielleicht mit dem gleichen Problem wie Ralf konfrontiert. Nach einer Anmeldung bei Verwendung des Template-Tag wp_loginout() wird man zur Profilseite bzw. zur Index weiter geleitet - warum nicht auf eine andere Seite ?
Mich hatte beim Einloggen in WordPress immer gestört das man nach dem Login im Profil landet. Das ist besonders dann ärgerlich, wenn man unangemeldet im Blog ein wenig gestöbert hat, dann einen Kommentar hinterlassen will und nach dem Login halt im Profil anstatt im Beitrag landet. So muss man u.U. mühsam den Beitrag wieder raus suchen bei dem man seinen Kommentar hinterlassen will.
Etwas eleganter lösen kann man den Login indem man den Besucher nach dem Einloggen genau auf die Seite zurück leitet, die er vor dem Login angeschaut hat.
WordPress erlaubt einen Redirect (Umleitung) mittels der Variablenredirect_to=URL". Dabei muss man die komplette URL inkl.http://übergeben. Leider unterstützt die Funktionwp_loginout()nicht direkt einen Redirect mittels Parameter.
Eine passende Lösung hat Ralf parat, bei der nur ein recht kleiner Codeschnipsel anstatt der Funktion wp_loginout() im Template integriert werden muss.
In meinem konkreten Fall wird WordPress als Dokumentationstool für ein Entwicklerprojekt genutzt und verschiedene User pflegen die Dokumentation. Diese Anwender wollten nun gern direkt nach einem Login in den Editiermodus - in diesem Fall sieht der Code dann folgendermaßen aus.
<?php
$redirect = 'wp-admin/post-new.php';
if (!is_user_logged_in()) {
$link = '<a href="' . get_settings('siteurl') . '/wp-login.php?redirect_to='.$redirect.'">' . __('Login') . '</a>';
}
else {
$link = '<a href="' . get_settings('siteurl') . '/wp-login.php?action=logout&redirect_to='.$redirect.'">' . __('Logout') . '</a>';
}
echo apply_filters('loginout', $link);
?>
Mit WordPress Version 2.7 wurden neue Funktionen eingeführt, die die obige Syntax nicht ohne weiteres erlauben. Möglich ist der Filter loginout aber weiterhin. Daher nutzt bitte das folgende Beispiel und passt es an eure Wünsche an.
<?php
$redirect = 'wp-admin/post-new.php';
if ( !is_user_logged_in() ) {
$link = '<a href="' . esc_url( wp_login_url( $redirect ) ) . '">' . __('Login') . '</a>';
} else {
$link = '<a href="' . esc_url( wp_logout_url( $redirect ) ) . '">' . __('Logout') . '</a>';
}
echo $link;
?>
Alternativ ebenso ein Beispiel über den Filter loginout.
<?php
$redirect = '/wp-admin/post-new.php';
if ( !is_user_logged_in() ) {
$link = '<a href="' . get_option('siteurl') . $redirect . '">' . __('Login') . '</a>';
} else {
$link = '<a href="' . get_option('siteurl') . $redirect . '">' . __('Logout') . '</a>';
}
echo apply_filters('loginout', $link);
?>
händischer Spam:
Beachte die Kommentarregeln, jede Form von versuchtem Spam wird gelöscht. Warum und wieso steht in einem meiner Beiträge.
Bezug auf Textstellen:
Du kannst direkt bezug auf Textstellen im Beitrag nehmen. Dazu muss lediglich der Bereich im Artikel markiert werden; daraufhin erscheint ein Button, der den markierten Text in das Kommentarfeld übernimmt und als Zitat auszeichnet. Die Funktion ist nur bei aktivem JavaScript nutzbar.
xHTML:
Du kannst folgende Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <code> <pre> <em> <strong> <strike> <ul> <ul> <li>
Achte darauf, wenn du Code im Kommentar hinterlegen willst, dann muss der Code maskiert sein. Dann wird er nicht interpretiert. Der Code muss mit Hilfe von HTML-Entities dargestellt werden, d.h. dass man z.B. < als < und > als > einfügt.
E-Mail-Benachrichtigung bei neuen Kommentaren ?
Wenn der Haken in der Checkbox gesetzt ist, dann wirst du über neue Kommentare vie E-Mail informiert. Der Versand erfolgt nur, wenn du die URL in der Bestätigungs-E-Mail genutzt hast oder schon Abonnent hier im Blog bist.
Kommentar erscheint nicht:
Alle Kommentare werden manuell geprüft, freigegeben und nach Möglichkeit beantwortet. Bitte um etwas Geduld und Nachsicht.
Identifikationsbilder (Avatare):
Auf Gravatar.com kann man sich mit seiner E-Mail-Adresse registrieren und ein Bild hochladen, dann erscheint dieses Gravatar hier und in vielen weiteren Blogs.
Spamschutz:
Das Kommentarformular ist mit einem Spamschutz ausgerüstet. Solltest du diesen Artikel ohne JavaScript besuchen und kommentieren wollen, so muss du die Frage beantworten und das jeweilige Wort in das Textfeld eingeben.
bueltge.de [by:ltge.de] wird von Frank Bültge geführt, administriert und gestaltet. Alle Inhalte sind persönlich von mir ausgewählt und erstellt, nach bestem Gewissen und Können, was die Möglichkeit von Fehlern nicht ausschließt.
Das Weblog wird angetrieben von WordPress und aktuell gibt es 971 Beiträge, 19448 Kommentare in 14 Kategorien und 459 Tags.
Das Blog wird liebevoll mit xHTML & CSS in Handarbeit gestaltet. Erstellt mit ♥ zum Befüllen und Erhalten.
Design und Code ist unter Copyright
© 2001 - 2012 bueltge.de [by:ltge.de]
20. März 2008 um 21:23
Hallo Frank,
danke für den Quellcode. Ich habe ihn für meine Zwecke etwas geändert.
<php $link = '<a href="'.get_settings('siteurl').'/wp-login.php?redirect_to='.get_permalink().'">'.__('Login').'</a>'; >Ich möchte verhindern, daß die Leser auf das Dashboard gelangen. Das ist auch Alles prima sofern sie nicht direkt die wp-login.php aufrufen.
Gibt es eine Möglichkeit das man nicht in das Dashboard gelangt?
Grüße
der Denis
20. März 2008 um 22:47
Soll das Dashboard komplett entfernt werden? oder soll nur der Link auf eine andere Seite führen, z.B. Verwalten? Beides geht.
21. März 2008 um 07:43
Moin Frank,
das Dashboard soll bleiben, nur der Leser soll nicht ins Backend. Das soll nur über WP-ADMIN gelingen (Das werde ich mit einem Verzeichnisschutz sperren). Ich habe jetzt in der wp-login.php in Zeile 294 das redirect_to geändert und nur ein / eingeführt. Klappt alles. Komisch ist nur. Wenn ich mit dem iE7 die Seite
http://www.denis-online.de/wp-login.phpaufrufen werde ich sofort umgeleitet aufhttp://www.denis-online.deim Firefox passiert das nicht. Nach dem Login ist alles prima.Grüße
der Denis
21. Januar 2009 um 04:48
hi, danke für den toolen codeschnipsel!
habe aber ein prob damit (wp 2.7): der code funkt soweit, erkennt, ob ich angemeldet bin, aber nach klick auf den logoutlink kommt ein weißer schrim mit der mittigen meldung: du versuchst dich von blabla abzumelden
bitte nochmals versuchen!
ich kann mich also nicht abmelden...
was mache ich falsch?
danke im vorraus
lg
bob
21. Januar 2009 um 20:58
@bob: eventuell hakt das Script, weil seit WP 2.7 die Nonce-Funktion in allen Bereich drin ist und dann müsste sie auch hier rein. Allerdings habe ich es auch schon in einem Blog mit 2.7 eingesetzt, bin mir aber nicht sicher, ob es genauso war.
22. Januar 2009 um 04:50
geht es also? was muss geändert werden bzw bitte um deinen 2.7er code.
danke vielmals
lg
rob
11. Juli 2009 um 10:29
Muss man beim obigen Code irgendwas noch beachten?
Die Seite vom Ralf ist leider inexistent und einfach übernehmen klappt nicht
13. Juli 2009 um 11:55
Bitte mal den Code nun prüfen, da ich Probleme mit der Last habe, habe ich die Darstellung von Code deaktiviert, sollte nun aber wieder in diesem Beitrag passen.
13. Juli 2009 um 18:29
Und es funktioniert auch super
Vielen Dank
19. Februar 2010 um 15:53
Servus Frank,
mittlerweile gibt es ja auch den hook:
login_form und login_form_('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login') lt. wp-login.php (
http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-login.php.html)Leider habe ich so überhaupt keine Ahnung wie ich i d functions.php einen neuen redirect anweise...
Hast Du eine Idee? Vielen Dank im Voraus!
22. Februar 2010 um 13:55
@k: aktuell habe ich nie mit einem Hook gearbeitet, da ich immer den Login neu gestalte. Aber du kannst ja neue Funktion über den Hook dort einbringen und dann abfragen, so dass ein Redirect möglich ist.
28. März 2011 um 13:41
Inzwischen hat sich WP ja enorm weiterentwickelt. Hast du einen funktionierenden Codeschnipsel für das akt. WP? Und wohin muss ich den packen? Möchte, dass meine Nutzer a) auf die letzte besuchte Seite geleitet werden ODER, wenn das einfacher ist 2) auf die Homepage nach dem Einloggen. Schönen Dank im Voraus!
28. März 2011 um 15:03
@Ramona: ist noch immer so; wp_login_form() nutzen und via Redirect weiter leiten; eventuell kann ich ein Plugin liefern - ist aber nicht frei, für diese Aufgabe.