Hier sind einige 6 nützliche Code-Snippets, die deine Seite sicherer, schneller und dein Leben einfacher machen. Relevante Themen rund um die Sicherheit, Performance, SEO und DSGVO eurer WordPress-Webseite könnt ihr auf InspectWP.com prüfen.
Alle folgenden Snippets gehören in die functions.php unter Design -> Theme-Datei-Editor.
WordPress Versionsnummer verbergen
Die WordPress Versionsnummer ist der erste Schritt, um deine Webseite vor Hackern zu sichern. Obwohl WordPress recht sicher ist und stetig verbessert wird, kann es Sicherheitslücken geben. Wenn ein Hacker nicht weiß, auf welcher WordPress-Version deine Webseite läuft, weiß er nicht sofort, welche Sicherheitslücken er ausnutzen kann.
remove_action('wp_head', 'wp_generator');
function remove_version_info() { return '';}
add_filter('the_generator', 'remove_version_info');
REST-API deaktivieren
Die REST-API (Representational State Transfer – Application Programming Interface) ist im Grunde genommen eine Schnittstelle, über welche man von Außerhalb der WordPress-Installation Zugriff auf die Datenbankeinträge erhalten können. Das ist sehr nützlich, wenn man beispielsweise eine App entwickelt und diese auf die Daten in der WordPress-Datenbank zugreifen soll.
Wenn man die REST-API nicht verwendet, sollte man sie sicherheitshalber deaktivieren.
add_filter('rest_endpoints', function ($endpoints) {
$endpoints_to_remove = array(
'users',
);
foreach ($endpoints_to_remove as $endpoint) {
$base_endpoint = "/wp/v2/{$endpoint}";
foreach ($endpoints as $maybe_endpoint => $object) {
if (strpos($maybe_endpoint, $base_endpoint) !== false) {
unset($endpoints[$maybe_endpoint]);
}
}
}
return $endpoints;
});
Ob eure REST-API erfolgreich deaktiviert wurde, könnt Ihr über diesen Link prüfen:
https://DEINE-DOMAIN.de/wp-json
Wenn du aus WordPress ausgeloggt bist und den Link aufrufst, muss folgende Meldung erscheinen: „You are not currently logged in.“
Und, ob man noch die WordPress-Benutzernamen auslesen kann, prüft Ihr über diesen Link:
https://DEINE-DOMAIN.de/wp-json/wp/v2/users
Google-Fonts entfernen
Man kann Fonts auf verschiedene Weisen verwenden. Einmal kann man die Google-Fonts laden, wie es standardmäßig bei WordPress und Elementor der Fall ist oder man lädt die Fonts lokal auf seinen Server hoch. Letzteres ist die klügere Lösung, denn man spart sich eine Serveranfrage an Google und ist datenschutzrechtlich auf der sicheren Seite.
Es wurden schon viele Webseitenbetreiber abgestraft, weil sie Google-Fonts eingebunden haben, ohne darauf in ihrer Datenschutzerklärung aufmerksam zu machen.
add_filter( 'elementor/frontend/print_google_fonts', '__return_false', 999 );
Als zweiten Schritt, um auf Nummer sicher zu gehen, deaktivieren wir auch noch die Google Fonts im WordPress-Dashboard unter Elementor -> Einstellungen -> Erweitert.
Gutenberg Block Library CSS deaktivieren
Gutenberg ist der Standardeditor in WordPress. Wenn man allerdings Elementor benutzt und nicht den Gutenberg-Editor, kann man die Gutenberg Block Library CSS-Datei für eine bessere Performance deaktivieren. Diese CSS-Datei wird sonst bei jedem Seitenaufruf mitgeladen.
function smartwp_remove_wp_block_library_css(){
wp_dequeue_style( 'wp-block-library' );
wp_dequeue_style( 'wp-block-library-theme' );
}
add_action( 'wp_enqueue_scripts', 'smartwp_remove_wp_block_library_css', 100 );
WordPress Emojis deaktivieren
Emojis – kaum einer benutzt sie auf seiner Webseite, aber das entsprechende Script wird standardmäßig mitgeladen. Für eine bessere Performance sollte man die Emojis deaktivieren.
Außerdem kann das Verwenden von Emojis zu Datenschutzverstößen führen. Wenn die Emojis von einer externen Domain geladen werden, können personenbezogene Daten wie die IP-Adresse and die externe Domain gesendet werden.
/** Emojies deaktivieren **/
function disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'disable_emojis_tinymce' );
add_filter( 'wp_resource_hints', 'disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'disable_emojis' );
/**
* Filter function used to remove the tinymce emoji plugin.
*
* @param array $plugins
* @return array Difference betwen the two arrays
*/
function disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
/**
* Remove emoji CDN hostname from DNS prefetching hints.
*
* @param array $urls URLs to print for resource hints.
* @param string $relation_type The relation type the URLs are printed for.
* @return array Difference betwen the two arrays.
*/
function disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' == $relation_type ) {
/** This filter is documented in wp-includes/formatting.php */
$emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
Seitentitel deaktivieren
Standardmäßig zeigt Elementor den Seitentitel oben links an, worin der Name der jeweiligen Seite/Unterseite steht. Wer bereits einige Seiten mit Elementor erstellt hat, weiß, wie nervig es ist jedes Mal auf Einstellungen -> Titel ausblenden zu klicken. Ich selber habe den Seitentitel noch nie gebraucht und jedes Mal ausgeblendet.
Zum Glück gibt es auch hierfür einen kleinen Code-Snippet, um die Seitentitel zu deaktivieren.
function ele_disable_page_title( $return ) {
return false;
}
add_filter( 'hello_elementor_page_title', 'ele_disable_page_title' );