Zunächst würde ich davon abraten, die Kerndateien zu bearbeiten, da diese beim nächsten Update von WordPress überschrieben werden.
Auch Sie sollten Wordpress aktualisieren, weil es oft Sicherheitsupdates enthalten wird. (Es wurde kürzlich berichtet, dass es eine Reihe von Angriffen auf Websites mit veralteten WordPress-Versionen gegeben hat.)
Um das zu erreichen, was Sie tatsächlich tun möchten, empfehle ich Ihnen, Hooks als beste Methode zum Bearbeiten von WordPress zu verwenden.
Um ein zusätzliches Feld auf Ihrer Anmeldeseite zu erstellen, können Sie den login_form
Aktions-Hook verwenden:
add_action('login_form','my_added_login_field');
function my_added_login_field(){
//Output your HTML
?>
<p>
<label for="my_extra_field">My extra field<br>
<input type="text" tabindex="20" size="20" value="" class="input" id="my_extra_field" name="my_extra_field_name"></label>
</p>
<?php
}
Als nächstes müssen wir überprüfen, ob das, was sie in das Feld eingegeben haben, mit dem übereinstimmt, was Sie gespeichert haben. Im folgenden Code habe ich angenommen, dass Sie den Identifikationscode als Benutzer-Metawert mit Metaschlüssel gespeichert haben my_ident_code
. Sie sollten dies tun, anstatt eine eigene Spalte zu erstellen! . Siehe die Codex-Seiten für
Um einen Benutzer zu überprüfen, können Sie den authenticate
Filter verwenden. Dies übergibt den eingegebenen Benutzernamen und das Passwort. Wenn der Identifikationscode korrekt ist, kehren Sie zurück null
, damit WordPress das Passwort und den Benutzernamen überprüfen kann. Wenn es nicht korrekt ist, entfernen Sie die WordPress-Authentifizierung und geben Sie einen Fehler zurück. Dadurch wird der Benutzer zur Anmeldeseite zurückgedrängt, auf der der Fehler angezeigt wird.
add_filter( 'authenticate', 'my_custom_authenticate', 10, 3 );
function my_custom_authenticate( $user, $username, $password ){
//Get POSTED value
$my_value = $_POST['my_extra_field_name'];
//Get user object
$user = get_user_by('login', $username );
//Get stored value
$stored_value = get_user_meta($user->ID, 'my_ident_code', true);
if(!$user || empty($my_value) || $my_value !=$stored_value){
//User note found, or no value entered or doesn't match stored value - don't proceed.
remove_action('authenticate', 'wp_authenticate_username_password', 20);
remove_action('authenticate', 'wp_authenticate_email_password', 20);
//Create an error to return to user
return new WP_Error( 'denied', __("<strong>ERROR</strong>: You're unique identifier was invalid.") );
}
//Make sure you return null
return null;
}