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&uuml;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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Kommentare zu diesem Beitrag