<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>bueltge.de [by:ltge.de] &#187; Login</title>
	<atom:link href="http://bueltge.de/tag/login/feed/" rel="self" type="application/rss+xml" />
	<link>http://bueltge.de</link>
	<description>Frank Bültge schreibt auf bueltge.de zu den Themen Webentwicklung &#38; design, WordPress, Literatur und andere Themen bezüglich Internet und Development</description>
	<lastBuildDate>Mon, 06 Feb 2012 12:19:43 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress Login Formular</title>
		<link>http://bueltge.de/wordpress-login-formular/976/</link>
		<comments>http://bueltge.de/wordpress-login-formular/976/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:52:12 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Formular]]></category>
		<category><![CDATA[Login]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Template]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=976</guid>
		<description><![CDATA[Vor geraumer Zeit habe ich mal einen kurzen Artikel veröffentlicht, in dem ich gezeigt habe, wie man die Links zum Ein- und Ausloggen in WordPress nutzt. In diesem Artikel möchte ich nun ein wenig weiter gehen und zeigen, wie man beispielsweise das Login-Formular in das Theme holt. Damit sind Anpassungen an das Design und die Integration an die eigenen Bedürfnisse sehr einfach umzusetzen.]]></description>
			<content:encoded><![CDATA[<p>Vor geraumer Zeit habe ich mal einen kurzen Artikel veröffentlicht, in dem ich gezeigt habe, wie man die Links zum <a href="http://bueltge.de/schoener-einloggen-mit-wordpress/371/">Ein- und Ausloggen in WordPress</a> nutzt. In diesem Artikel möchte ich nun ein wenig weiter gehen und zeigen, wie man beispielsweise das Login-Formular in das Theme holt. Damit sind Anpassungen an das Design und die Integration an die eigenen Bedürfnisse sehr einfach umzusetzen.<br />
<span id="more-976"></span><br />
Im ersten Fall möchte ich euch das klassische Login Formular zeigen, so dass es nicht gleich zu viel Code wird. Die folgende Syntax stellt dabei ein einfaches Login Formular im Theme dar. Ich habe keine weiteren Anpassungen vorgenommen und habe mich am Standard von WordPress orientiert.</p>
<pre><code>
&lt;form action="&lt;?php echo wp_login_url( get_permalink() ); ?&gt;" method="post"&gt;
	&lt;label for="log"&gt;
		&lt;input type="text" name="log" id="log" value="&lt;?php echo wp_specialchars(stripslashes($user_login), 1) ?&gt;" size="22" /&gt; User
	&lt;/label&gt;&lt;br /&gt;
	&lt;label for="pwd"&gt;
		&lt;input type="password" name="pwd" id="pwd" size="22" /&gt; Password
	&lt;/label&gt;&lt;br /&gt;
	&lt;input type="submit" name="submit" value="Send" class="button" /&gt;
	&lt;label for="rememberme"&gt;&lt;input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /&gt; Remember me&lt;/label&gt;
&lt;/form&gt;
</code></pre>
<p><img class="alignright" src="http://bueltge.de/wp-content/images/wp/loginform.png" alt="WP Loginform" /><br />
Nun ist das nicht immer ausreichend und abhängig von den Usern, die geloggt sind, und ob man sich überhaupt im Theme registrieren kann, habe ich ein kleines Beispiel geschrieben, welches diverse Aspekte beachtet.<br />
Mit der folgenden Syntax ist dabei die Ansicht für geloggte User (<code>if ( $user_ID )</code>) eine völlig andere und neue User bekommen das Formular nur dann, wenn sie sich registrieren dürfen (<code>get_option('users_can_register')</code>); abhängig von den Einstellungen im Backend von WordPress.<br />
Ebenso bekommen User, die ein <a href="http://bueltge.de/userlevel-bezogene-ausgabe-im-theme-von-wordpress/292/">User_Level</a> größer 1 (<code>if ( $user_level &gt;= 1 )</code>) haben, einen Link mehr, direkt zum Schreiben eines Artikels. Alternativ kann hier auch mit der Funktion <code>current_user_can()</code> gearbeitet werden und daher explizit das Objekt der Rolle abgefragt werden.</p>
<pre><code class="php">
&lt;?php
global $user_ID, $user_identity, $user_level;
if ( $user_ID ) { ?&gt;

	&lt;h3&gt;&lt;?php _e( 'Control panel', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/h3&gt;
	&lt;ul&gt;
		&lt;li&gt;&lt;?php _e( 'Identified as', FB_BASIS_TEXTDOMAIN ); ?&gt; &lt;strong&gt;&lt;?php echo $user_identity ?&gt;&lt;/strong&gt;.
			&lt;ul&gt;
				&lt;li&gt;&lt;a href="&lt;?php bloginfo('url') ?&gt;/wp-admin/"&gt;&lt;?php _e( 'Dashboard', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/a&gt;&lt;/li&gt;

				&lt;?php if ( $user_level &gt;= 1 ) { ?&gt;
					&lt;li&gt;&lt;a href="&lt;?php bloginfo('url') ?&gt;/wp-admin/post-new.php"&gt;&lt;?php _e( 'Write an article', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/a&gt;&lt;/li&gt;
				&lt;?php } ?&gt;

				&lt;li&gt;&lt;a href="&lt;?php bloginfo('url') ?&gt;/wp-admin/profile.php"&gt;&lt;?php _e( 'Profile', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="&lt;?php wp_logout_url( urlencode($_SERVER['REQUEST_URI']) ); ?&gt;"&gt;&lt;?php _e( 'Exit', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;

&lt;?php } elseif ( get_option('users_can_register') ) { ?&gt;

		&lt;h3&gt;&lt;?php _e( 'Identification', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/h3&gt;
		&lt;ul&gt;
			&lt;li&gt;
				&lt;form action="&lt;?php echo wp_login_url(get_permalink()); ?&gt;" method="post"&gt;
					&lt;p&gt;
						&lt;label for="log"&gt;
							&lt;?php _e( 'User', FB_BASIS_TEXTDOMAIN ); ?&gt;
							&lt;input type="text" name="log" id="log" value="&lt;?php echo wp_specialchars(stripslashes($user_login), 1) ?&gt;" size="22" /&gt;
						&lt;/label&gt;&lt;br /&gt;
						&lt;label for="pwd"&gt;
							&lt;?php _e( 'Password', FB_BASIS_TEXTDOMAIN ); ?&gt;
							&lt;input type="password" name="pwd" id="pwd" size="22" /&gt;
						&lt;/label&gt;&lt;br /&gt;
						&lt;input type="submit" name="submit" value="&lt;?php _e( 'Send', FB_BASIS_TEXTDOMAIN ); ?&gt;" class="button" /&gt;
						&lt;label for="rememberme"&gt;
							&lt;input name="rememberme" id="rememberme" type="checkbox" checked="checked" value="forever" /&gt;&lt;?php _e( 'Remember me', FB_BASIS_TEXTDOMAIN ); ?&gt;
						&lt;/label&gt;&lt;br /&gt;
						&lt;input type="hidden" name="redirect_to" value="&lt;?php echo $_SERVER['REQUEST_URI']; ?&gt;"/&gt;
					&lt;/p&gt;
				&lt;/form&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;a href="&lt;?php echo site_url('wp-login.php?action=register', 'login'); ?&gt;"&gt;&lt;?php _e( 'Register', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/a&gt;
			&lt;/li&gt;
			&lt;li&gt;
				&lt;a href="&lt;?php echo site_url('wp-login.php?action=lostpassword', 'login');	 ?&gt;"&gt;&lt;?php _e( 'Recover password', FB_BASIS_TEXTDOMAIN ); ?&gt;&lt;/a&gt;
			&lt;/li&gt;
		&lt;/ul&gt;

&lt;?php } ?&gt;
</code></pre>
<p>Wem die User-Level nicht ausreichen, der kann WordPress auch erweitern, entweder via Code,<a href="http://bueltge.de/wp-plugin-tipp-userlevel-abfragen/213/"> hier erklärt</a>, oder mit Hilfe eines Plugins.<br />
Mit Hilfe von einigen Zeilen PHP kann schnell ein Berechtigungsobjekt einer Rolle zugewiesen werden, beispielsweise in beim Aktivieren des Theme wie folgt.</p>
<pre><code>
function my_new_object() {
	global $wp_roles;

	$wp_roles-&gt;add_cap('administrator', 'MyObject');
}

// start an activation theme
if ( is_admin() &amp;&amp; isset($_GET['activated'] ) &amp;&amp; $pagenow == 'themes.php' )
	my_new_object();
</code></pre>
<p>Das Objekt kann dann einfach via Standard angefragt werden.<br />
<code>if ( current_user_can('MyObject') )</code></p>
<p>Alternativ kann man natürlich auch neue Rollen anlegen: <code>add_role('Neue_Rolle', 'Neuer Name der Rolle');</code>. Die Funktion erlaubt auch das gleichzeitige übernehmen von Rechten, dazu steht der dritte optionale Parameter bereit, der mehrere Werte in einem Array erwartet. Ansonsten die Objekte via <code>add_cap()</code> hinzufügen.</p>
<p>Das ist nur ein kleiner Ansatz, viele Möglichkeiten ergeben sich - viel Erfolg beim Nutzen der Möglichkeiten.</p>
<h3>Ab WordPress 3.0</h3>
<p>Ab der Version 3.0 geht das alles ein wenig einfacher und es gibt eine Funktion für das Formular um den User das Einloggen zu ermöglichen. Folgende Parameter sind möglich.</p>
<pre><code class="php">
wp_login_form(array(
    'echo' =&gt; true,
    'redirect' =&gt; site_url($_SERVER['REQUEST_URI']),
    'form_id' =&gt; 'loginform',
    'label_username' =&gt; __('Username'),
    'label_password' =&gt; __('Password'),
    'label_remember' =&gt; __('Remember Me'),
    'label_log_in' =&gt; __('Log In'),
    'id_username' =&gt; 'user_login',
    'id_password' =&gt; 'user_pass',
    'id_remember' =&gt; 'rememberme',
    'id_submit' =&gt; 'wp-submit',
    'remember' =&gt; true,
    'value_username' =&gt; ,
    'value_remember' =&gt; false
));
</code></pre>
<p>Damit könnte ein Login wie folgt aussehen:</p>
<pre><code class="php">
global $user_login;

if (is_user_logged_in()) {
    echo __( 'Hello', FB_BASIS_TEXTDOMAIN ) . $user_login . '&lt;a href=&quot;' . wp_logout_url() . '&quot; title=&quot;' . __( 'Logout', FB_BASIS_TEXTDOMAIN ) . '&quot;&gt;' . __( 'Logout', FB_BASIS_TEXTDOMAIN ) . '&lt;/a&gt;';
} else {
    wp_login_form();
}
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-login-formular/976/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-login-formular/976/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp/loginform.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp/loginform.png" medium="image">
			<media:title type="html">WP Loginform</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Authenticator, WordPress Login auch für das Frontend (Plugin)</title>
		<link>http://bueltge.de/authenticator-wordpress-login-frontend-plugin/721/</link>
		<comments>http://bueltge.de/authenticator-wordpress-login-frontend-plugin/721/#comments</comments>
		<pubDate>Sun, 17 Aug 2008 09:56:17 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Login]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=721</guid>
		<description><![CDATA[Nicht immer will man, dass das Frontend des Blog für alle User zugänglich ist und der Zugang soll nur autorisierten Nutzern zur Verfügung stehen. Dies kann man unter anderem lösen, in dem einen Zugriffsschutz via .htaccess integriert oder man nutzt ab nun das folgende Plugin. Das Plugin ist nach dem Aktivieren aktiv und sperrt Frontend [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://bueltge.de/wp-content/download/wp/images/authenticator.png" alt="Authenticator" /><br />
Nicht immer will man, dass das Frontend des Blog für alle User zugänglich ist und der Zugang soll nur autorisierten Nutzern zur Verfügung stehen. Dies kann man unter anderem lösen, in dem einen Zugriffsschutz via <code>.htacces</code>s integriert oder man nutzt ab nun das folgende Plugin.</p>
<p>Das Plugin ist nach dem Aktivieren aktiv und sperrt Frontend und Backend. Nur Nutzer, die einen Account im Blog haben, können sich anmelden und im Frontend die Inhalte lesen und im Backend je nach Rechten arbeiten. Anmeldung und Rechte werden nicht beeinflusst, es werden alle Daten und Templates von WordPress genutzt. Ebenso gibt es keinerlei Einstellungen - die Anmeldung am Backend von WordPress wird quasi vor das Frontend geholt und prüft nur, ob der Nutzer angemeldet ist.<br />
<span id="more-721"></span></p>
<h3>Anforderungen</h3>
<p>Das Plugin arbeitet mit WP 1.5 und höher.</p>
<h3>Installation</h3>
<ol>
<li>Download der zip-Datei</li>
<li>Datei lokal entpacken (Ordner mit einer PHP-Datei)</li>
<li>Den entstanden Ordner mit der Datei in euren WP-Plugin Ordner kopieren: <code>/wp-content/plugins/</code></li>
<li>Im Admin-Bereich das Plugin aktivieren, fertig.</li>
</ol>
<h3>Download:</h3>
<form class="spenden" action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="amount" id="eins" value="" />
<input type="hidden" name="cmd" value="_xclick" />
<input type="hidden" name="business" value="frank@bueltge.de" />
<input type="hidden" name="item_name" value="Spende bueltge.de:Authenticator" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="return" value="http://bueltge.de/" />
<input type="hidden" name="cancel_return" value="http://bueltge.de/" />
<input type="hidden" name="currency_code" value="EUR" />
<input type="hidden" name="tax" value="0" />
<input type="hidden" name="bn" value="PP-DonationsBF" />
<input type="image" src="http://bueltge.de/wp-content/images/donate.png" style="border:0" name="submit" alt="Zahlen Sie mit PayPal - schnell, kostenlos und sicher!" /></form>
<p><strong>Ist die Arbeit nicht 1 Euro wert?</strong></p>
<p>Jede Spende wird dankbar angenommen und ermöglicht das weitere Arbeiten an freier Software.<br />
Möchtest du mehr oder anders spenden, so besuche meine <a href="http://bueltge.de/wunschliste/">Wunschliste</a>.</p>
<p>Download als zip-Datei: <a href="http://downloads.wordpress.org/plugin/authenticator.zip">downloads.wordpress.org/plugin/authenticator.zip</a> - 1 kByte</p>
<h3>Historie</h3>
<p>Seit geraumer Zeit bietet das WordPress Plugin Repository die Möglichkeit der Ausgabe des Changelog an und so werde ich direkt am Plugin, in der Readme, die Historie pflegen - daher bitte ich, dass ihr euch <a href="http://wordpress.org/extend/plugins/authenticator/changelog/">dort die Änderungen anschaut</a>, so dass ich ein wenig hier pflegen muss: <a href="http://wordpress.org/extend/plugins/authenticator/changelog/">Changelog</a>.<br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/authenticator-wordpress-login-frontend-plugin/721/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/authenticator-wordpress-login-frontend-plugin/721/feed/</wfw:commentRss>
		<slash:comments>95</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/download/wp/images/authenticator.png" />
		<media:content url="http://bueltge.de/wp-content/download/wp/images/authenticator.png" medium="image">
			<media:title type="html">Authenticator</media:title>
		</media:content>
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>WordPress Login Sicherheit - Secure WP (Plugin)</title>
		<link>http://bueltge.de/wordpress-login-sicherheit-plugin/652/</link>
		<comments>http://bueltge.de/wordpress-login-sicherheit-plugin/652/#comments</comments>
		<pubDate>Mon, 19 May 2008 03:47:20 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Login]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/?p=652</guid>
		<description><![CDATA[WordPress gibt dem Anwender Information in die Hand, wenn er/sie sich falsch versucht hat einzuloggen. Die Ausgabe der Informationen sind recht vielschichtig und stellen ein Sicherheitsrisiko dar, denn mit diesen Informationen kann ein potenzieller Eindringling seinen Algorithmus beeinflussen.

Im Bereich Usability ist das auch ein feiner Zug und viele &#8222;normale Anwender&#8220; sind für diese Information sicher dankbar. Im Bereich eines Privatblogs oder mit Nutzern die mit der Umgebung vertraut sind sind diese Informationen nicht sonderlich relevant. Darum deaktiviere ich sie und mache so ein weiteres Hilfsmittel für potentielle Eindringlinge dicht. Das geht recht einfach, denn WordPress benutzt auch hier einen Filter-Hook und somit kann man diesen Filter recht einfach deaktivieren.]]></description>
			<content:encoded><![CDATA[<div class="landingsites">
<p>Für dieses Plugin gibt es keinen Support mehr von mir, die Version wurde komplett übernommen und wird von <a href="http://www.sitesecuritymonitor.com/secure-wordpress-plugin">Site Security Monitor</a> betreut. Bitte nutzt diese Version und meldet euch über die <a href="http://wordpress.org/extend/plugins/secure-wordpress/">Plugin-Seite</a> mit Fehlern, Wünschen und Hinweisen.</p>
<p>I don't provide support anymore for this plugin. This version has been completely taken over and will be maintained by <a href="http://www.sitesecuritymonitor.com/secure-wordpress-plugin">Site Security Monitor</a>. Please use this version and send emails via the <a href="http://wordpress.org/extend/plugins/secure-wordpress/">plugin page</a> about errors, wishes and tips.
</div>
<p>WordPress gibt dem Anwender Information in die Hand, wenn er/sie sich falsch versucht hat einzuloggen. Die Ausgabe der Informationen sind recht vielschichtig und stellen ein Sicherheitsrisiko dar, denn mit diesen Informationen kann ein potenzieller Eindringling seinen Algorithmus beeinflussen.</p>
<p>Im Bereich Usability ist das auch ein feiner Zug und viele &#8222;normale Anwender&#8220; sind für diese Information sicher dankbar. Im Bereich eines Privatblogs oder mit Nutzern die mit der Umgebung vertraut sind sind diese Informationen nicht sonderlich relevant. Darum deaktiviere ich sie und mache so ein weiteres Hilfsmittel für potentielle Eindringlinge dicht. Das geht recht einfach, denn WordPress benutzt auch hier einen Filter-Hook und somit kann man diesen Filter recht einfach deaktivieren.<br />
<span id="more-652"></span><br />
<img class="centered" src="http://bueltge.de/wp-content/images/wp25/wp25-login-error.png" alt="Login Fehlermeldung deaktivieren" /></p>
<p>Je nach Kenntnisstand kann man das auf zwei verschiedene Varianten tun. Entweder der folgende Code kommt in die <code>functions.php</code> des Themes oder man aktiviert einfach das nachstehend angebotene Plugin.</p>
<p>Das Plugin werde ich nach und nach mit weiteren Lösungen ausbauen, je nach Zeit und Kenntnisstand. Aktuell habe ich viele Lösungen auf unterschiedlichem Wege realisiert und will diese in diesem Plugin ablegen. Mit wenig Aufwand soll man so die gängigen Probleme lösen können. Ich werde aber sicher keinen Optionsbereich einbauen, denn zusätzliche Daten in der Datenbank für derartige Lösungen halte ich für überflüssig. Alles weitere dokumentiere ich dann hier im Beitrag und im Quellcode.</p>
<pre><code>
/**
 * remove Error-information
 */
add_filter( 'login_errors', create_function( '$a', "return null;" ) );
</code></pre>
<h3>Was macht das Plugin ?</h3>
<ol>
<li>Error Informationen aus dem Login-Bereich entfernen</li>
<li>WordPress Version aus allen Bereich, außer Backend, entfernen; auch im Feed (<a href="http://bueltge.de/wordpress-version-verschleiern-plugin/602/">weitere Info's</a>)</li>
<li>Versionsinformation für Nicht-Admins auch im Backend nicht ersichtlich.</li>
<li>erstellt eine virtuelle <em>index.html</em> im Plugin-Verzeichnis und eventuell das Listen des Inhaltes zu verhindern.</li>
<li>Entfernt Link für Windows Live Writer</li>
<li>Entfernt Link zum Really Simple Discovery Service</li>
<li>Entfernt die Update-Info zur WordPress Version für Nicht-Admins</li>
<li>Entfernt die Update-Info zu Plugin Updates für Nicht-Admins</li>
<li>Ergänzt um den String um den <a href="http://blogsecurity.net/wpscan">WP Scanner</a> zu nutzen</li>
<li>WordPress gegen bösartige URL-Anforderungen schützen</li>
</ol>
<h3>Anforderungen</h3>
<p>Secure WordPress arbeitet ab WP 2.6 und wurde getestet bis Version 2.9-rare.</p>
<h3>Installation</h3>
<ul>
<li>Die gepackte Datei downloaden und lokal entpacken</li>
<li>Die Datei in dein Plugin-Verzeichnis kopieren (/wp-content/plugins/)</li>
<li>Aktivieren des Plugins im Adminbereich deines WP</li>
</ul>
<h3>Download:</h3>
<p>Der Download ist auf der zugehörigen <a href="http://wordpress.org/extend/plugins/secure-wordpress/">Plugin-Seite</a> zu finden; dort steht die jeweils letzte Version zur Verfügung.</p>
<h3 id="historie">Historie</h3>
<ul>
<li>0.1 - Idee und Umsetzung</li>
<li>0.2 - Hinzugekommen: Entfernt WP-Version in allen Bereichen, außer Admin; fügt die <code>index.html</code> zum Plugin-Verzeichnis hinzu (damit kann das Plugin <a href="http://bueltge.de/wordpress-version-verschleiern-plugin/602/">Replace WP-Version</a> entfallen)</li>
<li>0.3 - WP 2.7 ready, alle Funktionen optional, Optionsbereich, ital. Sprachfile, etc.</li>
<li>0.3.1/2 - fix für WP <2.7; neue Funktion RSD und WLW</li>
<li>0.3.3 - Bugfix für WLW</li>
<li>0.3.4 - Erweiterung um zwei neue Option, Code verfeinert, mehr Möglichkeiten aus dem Core genutzt; optimiert für >=2.7; CSS ergänzt um auch das Markup der Error-Meldung zu entfernen</li>
<li>0.3.5 - Korrigieren Rechtschreibung in der dt. Sprachdatei; eine Abfrage hinzugefügt, die sicher stellt, dass diverse Hooks nur genutzt werden, wenn die Seite auch aktiv ist</li>
<li>0.3.6 - Erweiterung um WP Scanner, Bugfix für Mehrsprachigkeit (08/05/2009)</li>
<li>0.3.7 - Erweiterung für WP 2.8; Meta Links der Plugin-Seite (10/06/2009)</li>
<li>0.3.8 - add function to remove theme-update information for non-admins, rescan language file; edit de_DE (22/06/2009)</li>
<li>Bitte nutzt das <a href="http://wordpress.org/extend/plugins/secure-wordpress/changelog/">Changelog zum Plugin</a>, welches aktuell immer gepflegt wird.</li>
</ul>
<p><img src="http://vg04.met.vgwort.de/na/8a6b60fbc19642018fc84e67d1b58c98" width="1" height="1" alt="" class="ob"><br />
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/wordpress-login-sicherheit-plugin/652/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/wordpress-login-sicherheit-plugin/652/feed/</wfw:commentRss>
		<slash:comments>117</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/wp-content/images/wp25/wp25-login-error.png" />
		<media:content url="http://bueltge.de/wp-content/images/wp25/wp25-login-error.png" medium="image">
			<media:title type="html">Login Fehlermeldung deaktivieren</media:title>
		</media:content>
		<media:content url="http://vg04.met.vgwort.de/na/8a6b60fbc19642018fc84e67d1b58c98" medium="image" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
		<item>
		<title>Schöner Einloggen mit WordPress</title>
		<link>http://bueltge.de/schoener-einloggen-mit-wordpress/371/</link>
		<comments>http://bueltge.de/schoener-einloggen-mit-wordpress/371/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 13:44:42 +0000</pubDate>
		<dc:creator>Frank Bültge</dc:creator>
				<category><![CDATA[Tipps]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Login]]></category>
		<category><![CDATA[WP]]></category>

		<guid isPermaLink="false">http://bueltge.de/schoener-einloggen-mit-wordpress/371</guid>
		<description><![CDATA[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.]]></description>
			<content:encoded><![CDATA[<p>Wer seinen WordPress-Weblog so einstellt, dass neue User sich registrieren können, der ist vielleicht mit dem gleichen Problem wie <a href="http://neun12.de">Ralf</a> konfrontiert. Nach einer Anmeldung bei Verwendung des Template-Tag <code>wp_loginout()</code> wird man zur Profilseite bzw. zur Index weiter geleitet - warum nicht auf eine andere Seite ?</p>
<blockquote><p>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.</p>
<p>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.<br />
WordPress erlaubt einen Redirect (Umleitung) mittels der Variablen <code>redirect_to=URL"</code>. Dabei muss man die komplette URL inkl. <code>http://</code> übergeben. Leider unterstützt die Funktion <code>wp_loginout()</code> nicht direkt einen Redirect mittels Parameter.</p></blockquote>
<p>Eine <a href="http://unterderhaube.neun12.de/artikel-7">passende Lösung</a> hat Ralf parat, bei der nur ein recht kleiner Codeschnipsel anstatt der Funktion <code>wp_loginout()</code> im Template integriert werden muss.</p>
<p>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.</p>
<pre><code>
&lt;?php
$redirect = 'wp-admin/post-new.php';
if (!is_user_logged_in()) {
	$link = '&lt;a href=&quot;' . get_settings('siteurl') . '/wp-login.php?redirect_to='.$redirect.'&quot;&gt;' . __('Login') . '&lt;/a&gt;';
	}
else {
	$link = '&lt;a href=&quot;' . get_settings('siteurl') . '/wp-login.php?action=logout&amp;redirect_to='.$redirect.'&quot;&gt;' . __('Logout') . '&lt;/a&gt;';
}
echo apply_filters('loginout', $link);
?&gt;
</code></pre>
<p>Mit <strong>WordPress Version 2.7</strong> wurden neue Funktionen eingeführt, die die obige Syntax nicht ohne weiteres erlauben. Möglich ist der Filter <code>loginout</code> aber weiterhin. Daher nutzt bitte das folgende Beispiel und passt es an eure Wünsche an.</p>
<pre><code>
&lt;?php
$redirect = 'wp-admin/post-new.php';
if ( !is_user_logged_in() ) {
	$link = '&lt;a href=&quot;' . esc_url( wp_login_url( $redirect ) ) . '&quot;&gt;' . __('Login') . '&lt;/a&gt;';
} else {
	$link = '&lt;a href=&quot;' . esc_url( wp_logout_url( $redirect ) ) . '&quot;&gt;' . __('Logout') . '&lt;/a&gt;';
}
echo $link;
?&gt;
</code></pre>
<p>Alternativ ebenso ein Beispiel über den Filter <code>loginout</code>.</p>
<pre><code>
&lt;?php
$redirect = '/wp-admin/post-new.php';
if ( !is_user_logged_in() ) {
	$link = '&lt;a href=&quot;' . get_option('siteurl') . $redirect . '&quot;&gt;' . __('Login') . '&lt;/a&gt;';
} else {
	$link = '&lt;a href=&quot;' . get_option('siteurl') . $redirect . '&quot;&gt;' . __('Logout') . '&lt;/a&gt;';
}
echo apply_filters('loginout', $link);
?&gt;
</code></pre>
<hr />
<p><img src="http://bueltge.de/favicon.ico" alt="bueltge.de Favicon"/> <small>&copy; <a href="http://bueltge.de/">Frank B&uuml;ltge</a>, All rights reserved / Alle Rechte vorbehalten. (ID: 6e8b33de4342c4f2ca76b245199aeee8)</small></p>
<p><a href="http://bueltge.de/feed/"><img style="border: medium none ; float: left; margin-right: 10px;" src="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" alt="Feed Icon" width="34" height="34" /></a>Danke für das Abonnieren meines <strong><a href="http://bueltge.de/feed/">Feed</a></strong>! Inhalt gefällt? <a href="http://bueltge.de/wunschliste/" title="Wunschliste">Danke sagen</a> &middot; <a href="http://bueltge.de/schoener-einloggen-mit-wordpress/371/#writecomment" title="zu den Kommentaren dieses Artikels">Kommentieren</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bueltge.de/schoener-einloggen-mit-wordpress/371/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:thumbnail url="http://bueltge.de/favicon.ico" />
		<media:content url="http://bueltge.de/favicon.ico" medium="image">
			<media:title type="html">bueltge.de Favicon</media:title>
		</media:content>
		<media:content url="http://bueltge.de/wp-content/themes/black_label/images/rss.gif" medium="image">
			<media:title type="html">Feed Icon</media:title>
		</media:content>
	</item>
	</channel>
</rss>

