Appearance
Kapitel 14: Sicherheit & Performance
14.1 Theme-Sicherheit (Vermeiden von Sicherheitslücken)
1. Cross-Site Scripting (XSS) vermeiden
XSS tritt auf, wenn bösartige Skripte in Ihre Website eingeschleust werden.
Unsichere Praktiken (❌):
php
// Unsicher!
echo $_GET['name'];Sichere Praktiken (✅):
php
// Sicher!
echo esc_html($_GET['name']);2. SQL-Injection vermeiden
SQL-Injection tritt auf, wenn SQL-Befehle eingeschleust werden.
Unsicher (❌):
php
$query = "SELECT * FROM wp_posts WHERE ID = " . $_GET['id'];
$result = $wpdb->get_results($query);Sicher (✅):
php
$query = $wpdb->prepare("SELECT * FROM wp_posts WHERE ID = %d", $_GET['id']);
$result = $wpdb->get_results($query);3. Nonce (Number Used Once) verwenden
Nonces schützen vor CSRF (Cross-Site Request Forgery).
Nonce erstellen:
php
$nonce = wp_create_nonce('mein_action');Nonce prüfen:
php
if (!wp_verify_nonce($_POST['_wpnonce'], 'mein_action')) {
wp_die('Sicherheitsfehler');
}4. Datei-Uploads einschränken
Beschränken Sie, welche Dateitypen hochgeladen werden dürfen.
php
function mein_theme_mime_types($mimes) {
unset($mimes['php']); // PHP-Dateien blockieren
return $mimes;
}
add_filter('upload_mimes', 'mein_theme_mime_types');5. wp_nonce_field() in Formularen
php
<form method="post">
<?php wp_nonce_field('mein_form_action'); ?>
<input type="text" name="name">
<input type="submit" value="Absenden">
</form>Prüfen:
php
if (!wp_verify_nonce($_POST['_wpnonce'], 'mein_form_action')) {
wp_die('Ungültiges Nonce');
}14.2 Performance-Optimierung
1. Caching aktivieren
Browser-Caching (.htaccess):
# Browser Caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>WordPress-Caching (Plugins):
- WP Rocket (Premium)
- W3 Total Cache (Kostenlos)
- WP Super Cache (Kostenlos)
2. CSS/JS minimieren
CSS minimieren:
Vorher:
css
/* Navigation */
.main-nav {
background: #1a73e8;
padding: 20px;
}Nachher:
css
.main-nav{background:#1a73e8;padding:20px}JS minimieren:
Vorher:
javascript
function toggleMenu() {
var menu = document.querySelector('.nav');
menu.classList.toggle('active');
}Nachher:
javascript
function toggleMenu(){var menu=document.querySelector('.nav');menu.classList.toggle('active')}3. Bilder optimieren
Vor dem Upload:
- TinyPNG (https://tinypng.com)
- ImageOptim (Mac)
- RIOT (Windows)
Nach dem Upload (Plugins):
- Smush
- ShortPixel
- Imagify
4. Lazy Loading aktivieren
WordPress 5.5+ hat natives Lazy Loading:
php
// In functions.php
add_theme_support('lazy-loading-images');Oder im Template:
php
<img src="bild.jpg" loading="lazy" alt="Beschreibung">5. CDN verwenden
Cloudflare (Kostenlos/Premium):
- Registrieren Sie sich bei cloudflare.com
- Ändern Sie Ihre Nameserver auf Cloudflare-Nameserver
- Aktivieren Sie "Orange Cloud" für Ihre Domain
6. Datenbank optimieren
Post-Revisionen begrenzen:
In wp-config.php:
php
define('WP_POST_REVISIONS', 5); // Max. 5 RevisionenAutoload-Daten bereinigen:
sql
DELETE FROM wp_options WHERE autoload = 'yes' AND option_name NOT LIKE '%important%';Mit Plugin: WP-Optimize
14.3 Theme-Review-Richtlinien (für WordPress.org)
Wenn Sie Ihr Theme bei WordPress.org einreichen möchten, müssen Sie diese Richtlinien befolgen:
1. Sicherheit
- ✅ Alle Daten müssen validiert und bereinigt werden
- ✅ Nonces müssen verwendet werden
- ✅ Datei-Uploads müssen sicher sein
2. Code-Qualität
- ✅ PHP-Code muss PHP-Coding-Standards folgen
- ✅ HTML/CSS muss semantisch korrekt sein
- ✅ JavaScript muss Best Practices folgen
3. Dokumentation
- ✅
readme.txtmuss vorhanden sein - ✅ Alle Funktionen müssen kommentiert sein
- ✅
style.cssmuss Theme-Informationen enthalten
4. Lizenz
- ✅ Theme muss GPL v2 (oder später) lizenziert sein
- ✅ Alle Ressourcen müssen kompatible Lizenzen haben
14.4 readme.txt erstellen
Für WordPress.org ist eine readme.txt erforderlich.
Beispiel:
=== Modern Blog ===
Contributors: ihrname
Tags: blog, two-columns, right-sidebar
Requires at least: WordPress 5.9
Tested up to: WordPress 6.4
Requires PHP: 7.4
Stable tag: 1.0.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
== Beschreibung ==
Modern Blog ist ein responsives WordPress-Theme für Blogger.
== Installation ==
1. Laden Sie das Theme herunter
2. Gehen Sie zu Design → Themes → Neu hinzufügen
3. Laden Sie das Theme hoch
4. Aktivieren Sie es
== Frequently Asked Questions ==
= Wie ändere ich die Farben? =
Gehen Sie zu Design → Anpassen → Farben.
== Changelog ==
= 1.0.0 =
* Initial release14.5 theme-check Plugin verwenden
Theme Check ist ein Plugin, das Ihr Theme auf WordPress.org-Richtlinien prüft.
Installation:
- Gehen Sie zu Plugins → Neu hinzufügen
- Suchen Sie nach "Theme Check"
- Installieren und aktivieren Sie es
Verwendung:
- Gehen Sie zu Design → Theme Check
- Wählen Sie Ihr Theme aus
- Klicken Sie auf "Check it!"
- Korrigieren Sie alle Fehler
📝 Übung 14: Theme härten
Ziel: Machen Sie Ihr Theme sicherer und schneller.
Schritte:
- Überprüfen Sie Ihren Code auf XSS-Lücken
- Verwenden Sie
esc_html(),esc_url(), etc. - Aktivieren Sie Lazy Loading
- Minimize CSS und JS
- Testen Sie Ihr Theme mit Theme Check
✅ Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ XSS und SQL-Injection zu vermeiden
- ✅ Nonces zu verwenden
- ✅ Caching und CDN zu nutzen
- ✅ Bilder zu optimieren
- ✅ WordPress.org-Richtlinien zu befolgen
Nächstes Kapitel: Wir lernen Child-Themes kennen.
