Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
wordpress [2018/11/09 08:20] – [Nützliche Plugins] olli | wordpress [2023/09/02 12:55] (aktuell) – olli |
---|
| |
===== /category aus Link zu Kategorien entfernen ===== | ===== /category aus Link zu Kategorien entfernen ===== |
Standardmäßig verwendet Wordpress in den Links zu den Kategoriearchiven "/category/" bzw. die eingestellte Kategoriebasis. Um diesen Teil zu entfernen hat es bis Version 3.4 ausgereicht "./" als Kategoriebasis [[http://faq.wordpress-deutschland.org/kategoriebasierte-permalinks-und-category-aus-post-url-entfernen/|einzutragen]]. Mit dem Plugin [[http://wordpress.org/extend/plugins/no-category-base-wpml/|WP No Category Base]] ab Version 1.1.0 kann der gleiche Effekt erzielt werden. Das Plugin No Category Parents mit diesem [[http://wordpress.org/support/topic/plugin-no-category-parents-for-fix-no-post-on-category-d-work-on-34|Patch für Wordpress 3.4]] entfernt "category" zwar aus den Links zu den Seiten (vorher: "category/my-category/my-page", nachher: "my-category/my-page"), aber nicht aus den Links zu den Kategoriearchiven (vorher und nachher: "category/my-category/"). | Standardmäßig verwendet Wordpress in den Links zu den Kategoriearchiven "/category/" bzw. die eingestellte Kategoriebasis. Um diesen Teil zu entfernen hat es bis Version 3.4 ausgereicht "./" als Kategoriebasis einzutragen. Mit dem Plugin [[http://wordpress.org/extend/plugins/no-category-base-wpml/|WP No Category Base]] ab Version 1.1.0 kann der gleiche Effekt erzielt werden. Das Plugin No Category Parents mit diesem [[http://wordpress.org/support/topic/plugin-no-category-parents-for-fix-no-post-on-category-d-work-on-34|Patch für Wordpress 3.4]] entfernt "category" zwar aus den Links zu den Seiten (vorher: "category/my-category/my-page", nachher: "my-category/my-page"), aber nicht aus den Links zu den Kategoriearchiven (vorher und nachher: "category/my-category/"). |
===== Sidebar auch für single-Posts und Seiten (Pages) anzeigen ===== | ===== Sidebar auch für single-Posts und Seiten (Pages) anzeigen ===== |
Die empfohlene Vorgehensweise für das twentyeleven Theme ist [[http://web.archive.org/web/20130323012726/http://futurewebblog.com/add-sidebar-support-posts-twenty-eleven-theme/|hier]] beschrieben: | Die empfohlene Vorgehensweise für das twentyeleven Theme ist [[http://web.archive.org/web/20130323012726/http://futurewebblog.com/add-sidebar-support-posts-twenty-eleven-theme/|hier]] beschrieben: |
</code> | </code> |
| |
===== Adminbereich mit SSL-Proxy absichern ===== | ===== Login-Fehlermeldung ändern ===== |
<WRAP tip round> | Aus den Fehlermeldungen, die Wordpress bei fehlerhaften Logins ausgibt, kann ein möglicher Angreifer schließen, ob Passwort oder Benutzeranme falsch waren. Um das zu ändern, muss in der functions.php des Child-Themes folgendes eingetragen werden: |
All-Inkl bietet mittlerweile kostenlos SSL mittels SNI an, so dass die folgende Konfiguration für den SSL-Proxy nicht mehr nötig ist und nicht mehr empfohlen wird, da das Plugin wahrscheinlich nicht mehr weiterentwickelt wird. | |
</WRAP> | |
Um den Adminbereich von Wordpress zu schützen, sollte eine SSL-Verschlüsselung benutzt werden. Viele Provider, z.b. [[http://www.all-inkl.com|all-inkl]] bieten einen SSL-Proxy ([[http://ssl-account.com]]/domainname) an. Um den SSL-Proxy zu benutzen, wird folgendes in die wp-config.php eingetragen: | |
<code php> | <code php> |
if( isset( $_SERVER['HTTP_X_FORWARDED_SERVER'] ) ) { | //don't show if username or password was wrong |
//with SSL-Proxy | function my_login_error_message() { |
$_SERVER['HTTPS']='on'; | return "<b>FEHLER:</b> Deine Login-Daten sind fehlerhaft."; |
$_SERVER['HTTP_HOST'] = 'ssl-account.com'; | |
$_SERVER['REQUEST_URI']='/e-dschungel.de'. $_SERVER['REQUEST_URI']; | |
define('WP_SITEURL', 'https://ssl-account.com/e-dschungel.de'); | |
define('WP_HOME', 'https://ssl-account.com/e-dschungel.de'); | |
define('COOKIE_DOMAIN', 'ssl-account.com'); | |
define('COOKIEPATH', '/e-dschungel.de/'); | |
} else { | |
//without SSL proxy everything is configured automatically | |
} | } |
| add_filter('login_errors', 'my_login_error_message'); |
</code> | </code> |
Um zu vermeiden, dass beim Bearbeiten von Artikel über den SSL-Proxy falsche (d.h. Links via SSl-Proxy) gespeichert werden kann man das Plugin [[http://klein-gedruckt.de/2013/08/wp-plugin-ssl-proxy-url-fixer/|SSL Proxy URL Fixer]] verwenden. | |
Damit alle Logins über den SSL-Proxy laufen, werden alle Zugriffe mit .htaccess umgeleitet: | |
<code apache> | |
#force SSL login | |
<IfModule mod_rewrite.c> | |
RewriteEngine on | |
RewriteBase / | |
| |
# redirect wp-(admin|login|register)* to HTTPS | ===== Umstellung auf HTTPS ===== |
RewriteCond %{HTTPS} off | * Backup der Dateien und der Datenbank machen |
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl-account\.com$ [NC] | * Auslieferung über HTTPS aktivieren/SSL Zertifikat installieren |
RewriteCond %{REQUEST_FILENAME} -f [OR] | * In ''wp-config.php'' eintragen: <code php>define('FORCE_SSL_ADMIN', true); </code> |
RewriteCond %{REQUEST_FILENAME} -d | * Seitenadresse in den Wordpress-Einstellungen unter ''Einstellungen -> Allgemein'' auf HTTPS umstellen |
RewriteRule ^wp-(admin|login|register)(.*) https://ssl-account.com/e-dschungel.de | * Alle Links im Inhalt und in den Templates umstellen. Dabei hilft das [[https://interconnectit.com/products/search-and-replace-for-wordpress-databases/|Search and Replace Script]] (läuft unabhängig von Wordpress) oder [[https://de.wordpress.org/plugins/better-search-replace/|Better Search Replace]] als Wordpress-Plugin. Wordpress selbst bietet mittlerweile auch [[https://all-inkl.com/wichtig/anleitungen/skripte/blogs/wordpress/ssl-in-wordpress-aktivieren_507.html|eine eigene Funktion]] dafür an. |
| * Sitemapadresse in der ''robots.txt'' auf HTTPS umstellen |
# redirect xmlrpc* to HTTPS | * Google Webmastertools auf HTTPS umstellen |
RewriteCond %{HTTPS} off | * Werden [[https://swwiki.e-dschungel.de/apache#unterschiedliche_inhalte_verschluesseltunverschluesselt|unterschiedliche Inhalt ausgeliefert, je nach dem ob verschlüsselt oder unverschlüsselt übertragen wird]] (z.B. für ''robots.txt''), sollte das überprüft werden |
RewriteCond %{HTTP:X-FORWARDED-SERVER} !^ssl-account\.com$ [NC] | * Nach Mixed-Content-Warnungen suchen, dabei hilt [[https://www.jitbit.com/sslcheck/|SSLCheck]] |
RewriteRule ^xmlrpc(.*) https://ssl-account.com/e-dschungel.de/xmlrpc$1$ | * Umleitung von HTTP nach HTTPS einrichten |
</IfModule> | * SSL-Einstellungen überprüfen, dabei hilft [[https://www.ssllabs.com/ssltest/|SSLLabs]] |
| |
| ===== Debugging ===== |
| Um Fehler und Warnungen zum Debugging einzuschalten muss in der Datei ''wp-config.php'' folgendes eingetragen werden: |
| <code php> |
| define( 'WP_DEBUG', true ); |
| define( 'WP_DEBUG_LOG', true ); |
</code> | </code> |
| |
Um zu verhindern, dass Suchmaschinen den Inhalt über den SSL-Proxy indizieren und wegen Duplicate Content abwertet, kann man Apache eine andere robots.txt über den SSL-Proxy ausliefern lassen. Dazu werden in der .htaccess folgende Befehle vor den Befehlen für Wordpress eingetragen: | Die Logs werden kann nach ''wp-content/debug.log'' geschrieben und zusätzlich dem Benutzer angezeigt. |
<code apache> | Soll keine Anzeige für den Nutzer erfolgen muss außerdem noch <code php> |
| define( 'WP_DEBUG_DISPLAY', false ); |
| </code> hinzugefügt werden. |
| |
| ===== Slugs mit gleichem Namen wie existierendes Unterverzeichnis ===== |
| Um den Wordpress-Permalink bzw. Slug ''testdir'' und die Unterseite ''testdir/subdir'' als Wordpress-Seite verwenden zu können, obwohl ''testdir'' und ''testdir/subdir'' physikalisch als Verzeichnisse existieren, muss eine zusätzliche Regel in die ''.htaccess'' vor ''BEGIN Wordpress'' eingetragen werden: |
| <code> |
<IfModule mod_rewrite.c> | <IfModule mod_rewrite.c> |
RewriteEngine on | RewriteEngine On |
RewriteCond %{HTTPS} off | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] |
RewriteCond %{HTTP:X-FORWARDED-SERVER} ^ssl-account\.com$ [NC] | RewriteBase / |
RewriteRule ^robots\.txt$ robots_ssl.txt [L] | RewriteRule ^index\.php$ - [L] |
| RewriteCond %{REQUEST_FILENAME} /testdir/$ [OR] |
| RewriteCond %{REQUEST_FILENAME} /testdir/subdir/$ |
| RewriteRule . /index.php |
</IfModule> | </IfModule> |
</code> | </code> |
Damit wird beim Zugriff über den SSL-Proxy die Datei robots_ssl.txt ausgeliefert, wenn robots.txt angefordert wird. Mit dem Inhalt | |
| ===== Default-Werte für Plugin Contact Form 7 ===== |
| Default-Werte für Forumlare mit dem Plugin Contact Form 7 können auch über Get-Variablen festgelegt werden. |
<code> | <code> |
User-agent: * | [text* your-name default:get] |
Disallow: / | |
</code> | </code> |
der Datei robots_ssl.txt wird die Indizierung komplett verboten. | Auch Post-Variablen sind möglich, für Details siehe https://contactform7.com/getting-default-values-from-the-context/ |
| |
===== Login-Fehlermeldung ändern ===== | |
Aus den Fehlermeldungen, die Wordpress bei fehlerhaften Logins ausgibt, kann ein möglicher Angreifer schließen, ob Passwort oder Benutzeranme falsch waren. Um das zu ändern, muss in der functions.php des Child-Themes folgendes eingetragen werden: | |
<code php> | |
//don't show if username or password was wrong | |
function my_login_error_message() { | |
return "<b>FEHLER:</b> Deine Login-Daten sind fehlerhaft."; | |
} | |
add_filter('login_errors', 'my_login_error_message'); | |
</code> | |
| |
===== Nützliche Plugins ===== | ===== Nützliche Plugins ===== |
* [[https://wordpress.org/plugins/tinymce-advanced/|Tiny MCE Advanced]] ein erweiterter Editor | * [[https://wordpress.org/plugins/tinymce-advanced/|Tiny MCE Advanced]] ein erweiterter Editor<WRAP important round>Wird scheinbar nicht mehr gepflegt.</WRAP> |
* [[https://wordpress.org/plugins/google-sitemap-generator/|Google XML Sitemaps]] zur Generierung von Sitemaps für Suchmaschinen | * [[https://wordpress.org/plugins/google-sitemap-generator/|Google XML Sitemaps]] zur Generierung von Sitemaps für Suchmaschinen |
* [[https://de.wordpress.org/plugins/mail-on-update/|Mail On Update]] zur Benachrichtigung per Email bei Updates <WRAP important round>Das bisher empfohlene Plugin [[https://wordpress.org/plugins/wp-updates-notifier/|WP Updates Notifier]] wird scheinbar nicht mehr gepflegt. | * [[https://de.wordpress.org/plugins/companion-auto-update/|Companion Auto Update]] zur Benachrichtigung per Email bei Updates <WRAP important round>Die bisher empfohlene Plugins [[https://de.wordpress.org/plugins/mail-on-update/|Mail On Update]] und [[https://wordpress.org/plugins/wp-updates-notifier/|WP Updates Notifier]] werden scheinbar nicht mehr gepflegt. |
</WRAP> | </WRAP> |
* [[https://wordpress.org/plugins/wp-flexible-map/|WP Flexible Map]] für Karten <WRAP important round> | * [[https://wordpress.org/plugins/wp-flexible-map/|WP Flexible Map]] für Karten <WRAP important round> |
</WRAP> | </WRAP> |
* [[https://de.wordpress.org/plugins/antispam-bee/|Antispam Bee]] als Spamschutz | * [[https://de.wordpress.org/plugins/antispam-bee/|Antispam Bee]] als Spamschutz |
* [[https://de.wordpress.org/plugins/contact-form-7/|Contact Form 7]] für Kontaktformulare mit [[https://de.wordpress.org/plugins/contact-form-7-honeypot/|Contact Form 7]] Honeypot als Spamschutz <WRAP important round> Das bisher empfohlene Plugin [[https://de.wordpress.org/plugins/si-contact-form/|Fast Secure Contact Form]] wird nicht mehr gepflegt. In den Versionen 4.0.52, 4.0.53, 4.0.54 und 4.0.55 war Spam enthalten, siehe [[http://www.fastsecurecontactform.com/|Details]] vom ursprünglichen Plugin-Autor. | * [[https://de.wordpress.org/plugins/contact-form-7/|Contact Form 7]] für Kontaktformulare mit [[https://de.wordpress.org/plugins/contact-form-7-honeypot/|Contact Form 7 Honeypot]] als Spamschutz <WRAP important round> Das bisher empfohlene Plugin [[https://de.wordpress.org/plugins/si-contact-form/|Fast Secure Contact Form]] wird nicht mehr gepflegt. In den Versionen 4.0.52, 4.0.53, 4.0.54 und 4.0.55 war Spam enthalten, siehe [[http://www.fastsecurecontactform.com/|Details]] vom ursprünglichen Plugin-Autor. |
| </WRAP> |
| * [[https://de.wordpress.org/plugins/cachify/|Cachify]] als Cache |
| * [[https://de.wordpress.org/plugins/download-monitor/|Download-Monitor]] oder [[https://de.wordpress.org/plugins/download-manager/|Wordpress Download Manager]] als Downloadmanager (falls erforderlich). Ich verwende kein Plugin mehr, sondern gestalte die Download-Seiten mit Wordpress-Bordmitteln. <WRAP important round> Das bisher empfohlene [[https://wordpress.org/plugins/wp-filebase/|WP-Filebase]] wird nicht mehr gepflegt. |
| </WRAP> |
| * [[https://de.wordpress.org/plugins/enlighter/|Enlighter]] als Syntax-Highlighter <WRAP important round> Das bisher empfohlene Plugin [[https://wordpress.org/plugins/wp-syntax/|WP Syntax]] wird nicht mehr gepflegt und ist (durch die enthaltene Geshi-Version) nicht kompatibel zu PHP 8.0 und höher. |
</WRAP> | </WRAP> |
===== Links ===== | ===== Links ===== |
* [[http://wordpress.org|Homepage]] | * [[http://wordpress.org|Homepage]] |
* [[http://www.elmastudio.de/wordpress/wordpress-theme-anpassungen-mit-hilfe-von-child-themes/|Themeanpassungen mit Child-Themes]] | * [[http://www.elmastudio.de/wordpress/wordpress-theme-anpassungen-mit-hilfe-von-child-themes/|Themeanpassungen mit Child-Themes]] |