Sicherheitsrelevante Einstellungen in der functions.php des Child Themes

Editoren abschalten

Im WordPress-Backend kann man standardmäßig Plugin- und Theme-Dateien direkt bearbeiten. Um Missbrauch zu vermeiden, sollte man diese Editoren abschalten:

define('DISALLOW_FILE_EDIT', true);

Benutzernamen schützen

Den Pfad /wp-json/wp/v2/users deaktivieren, damit man die Benutzernamen nicht mehr auslesen kann.

add_filter('rest_endpoints', function( $endpoints ) {
    if ( isset( $endpoints['/wp/v2/users'] ) ) {
        unset( $endpoints['/wp/v2/users'] );
    }
    if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
        unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
    }
    return $endpoints;
});

Many thanks to How to remove users from WP-JSON!

Login-Fehler verallgemeinern

Bei Login-Fehler die Info, ob Benutzername oder Passwort falsch eingegeben wurde, ersetzen:

add_filter('login_errors',function($a) {return "Die Kombination aus Benutzername und Passwort ist falsch.";});

E-Mail als Benutzername beim Login

Benutzername deaktivieren, Login nur noch per E-Mail + Passwort zulassen (How to disable username and turn on email login only)

remove_filter('authenticate', 'wp_authenticate_username_password', 20, 3);