WordPress – Beiträge & Seiten durch eigenes Passwort Formular schützen
Unschwer zu bemerken, ich arbeite gerade an meiner eigenen Seite, daher folgen so viele WordPress Beiträge :-) … Gerade stand ich vor der Situation, dass ich das Login Formular für Beiträge und/oder Seiten anpassen wollte. Nicht zuletzt deswegen, weil ich die Bootstrap CSS Klassen unterbringen und ggf. noch einen Template Part ergänzen will. Dazu ist nur eine kleine Ergänzung in der functions.php deines Themes notwendig. Das Passwort für einzelene Beiträge, oder Seiten, wird direkt im Backend bei Erstellung des entsprechenden Inhaltes vergeben.
Was ist zu tun?
Ergänzung in der functions.php
// Login Form für Beiträge, Seiten,... // ehemals wp-pass.php add_filter( 'the_password_form', 'custom_password_form' ); function custom_password_form() { global $post; // get_template_part('templates/template', 'login'); $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID ); $o = ' <form class="" action="' .site_url() . '/wp-login.php?action=postpass' .'" method="post"> <label class="" for="' . $label . '">' . __( "Dein Passwort für diese Seite:" ) . ' </label> <input class="form-control" style="width: 200px;" name="post_password" id="' . $label . '" type="password" /> <input class="btn btn-light" type="submit" name="Submit" value="' . esc_attr__( "Anmelden" ) . '" /> </form> <div class="mt-2 mb-2"> <p>Dieser Bereich ist durch ein Passwort geschützt. Ein Passwort erhältst du per Mail.</p> </div> '; return $o; }
Bei Bedarf ein Template Part
Innerhalb der Funktion wird ein Template Part aufgerufen (get_template_part(‚templates/template‘, ‚login‘);). In diesem Fall ist er auskommentiert, bietet jedoch die Möglichkeit bspw. einen individuellen Text und/oder ähnliches an gewünschter Position unterzubringen.
Die Ausgabe im Frontend
Keine grafische Meisterleistung, aber angemessen und in diesem Fall auch vollkommen ausreichend.
Feintuning
Feintuning und Kosmetik muss natürlich sein. Geschützte Beiträge werden, wie in dem vorangegangenen Screenshot, immer der Wortlaut „Geschützt“ vorangestellt. Wer bspw. einfach nur eine Symbolik mit FontAwesome oder ähnlichem voranstellen möchte kann auch das in der functions.php entsprechend ergänzen.
// Geschützte Beiträge - Wortlaut "Geschützt" anpassen function remove_pw_info ( $title ) { $title = str_replace( 'Geschützt: ', "<i class='fas fa-lock'></i> ", $title ); $title = str_replace( 'Geschützt: ', "<i class='fas fa-lock'></i> ", $title ); return $title; } add_filter('the_title', 'remove_pw_info');
Und das Ergebnis sieht dann in etwas wie nachfolgend aus
Mehr Informationen
Verfasst am 06.10.23, durch Jens.