WordPress-Datenbank-Fehler: Table ‚blc_instances‘ doesn’t exist


Datenbank Bild

Das ERROR-Log des Webhosting-Anbieters meldet einen WordPress-Datenbank-Fehler bei einer SQL-Abfrage auf der blc_instances-Tabelle:

WordPress-Datenbank-Fehler Table 'dbXXXXXXXX-wordpress.my_blog__blc_instances' doesn't exist f\xc3\xbcr Abfrage SELECT instance_id FROM `my_blog__blc_instances` WHERE container_id = 2016 AND container_type = 'post' von do_action_ref_array('wp_scheduled_auto_draft_delete'), WP_Hook->do_action, WP_Hook->apply_filters, wp_delete_auto_drafts, wp_delete_post, do_action('delete_post'), WP_Hook->do_action, WP_Hook->apply_filters, blcPostTypeOverlord->post_deleted

Der Übeltäter ist das Plugin Broken Link Checker. Seit dem Update auf die Version 1.11.8 am 21. März 2019 tritt dieser Fehler auf. Schuld daran ist die Änderung der post_deleted()-Funktion in der blcPostTypeOverlord-Klasse in der Datei /www/wp-content/plugins/broken-link-checker/includes/any-post.php [Zeile 119]. Diese Funktion wurde komplett überarbeitet und zwar fehlerhaft.

WordPress-Datenbank-Fehler „Column cannot be null“ beheben


WordPress_phpMyAdmin_LogoBetreibt man eine eigene Webseite, sollte man auch zwischendurch die Logdateien des Webhosting-Servers überprüfen. Nicht jeder Provider stellt eine E-Mail-Benachrichtigung im Falle eines Fehlers zur Verfügung. Eine regelmäßige Kontrolle der ERROR-Logs kann somit hilfreich sein, eine sofortige Maßnahme zu ergreifen um den Fehler zu beseitigen.

Die ERROR-Logs erfassen alle aufgetretenen Fehler im Zusammenhang mit der Webseite. Ist eine Seite zum Beispiel nicht erreichbar, wird eine Meldung ausgegeben, dass sie nicht angezeigt werden konnte, weil die Index-Datei fehlt und der direkte Zugriff auf das Verzeichnis verboten ist.

[Tue Apr 23 20:41:25 2019] [autoindex:error] [pid 13438] [client 47.254.xxx.xxx] [host www.technik-tipps-und-tricks.de] AH01276: Cannot serve directory /is/htdocs/wpXXXXXXXXX_XXXXXXXXXX/www/wp-content/uploads/: No matching DirectoryIndex (index.html,index.htm,index.shtml,index.php,index.php5,index.wml,index.xml) found, and server-generated directory index forbidden by Options directive

In dem Beispiel weiter unten wird die Suche und Behebung eines Datenbankfehlers auf einem HostEurope Webserver beschrieben.

WordPress Plugin Podamibe Custom User Gravatar v1.0.6 zerstört das Theme-Layout


Das Podamibe Custom User Gravatar Plugin-Upgrade auf die Version 1.0.6 zerschießt das Theme-Layout. Die Textschrift ist kleiner und die Listenformatierung verändert.

Theme_layout_veraendert
Zerstörtes Theme-Layout

Man kann das Update rückgängig auf die Version 1.0.5 machen und die Aktualisierung auf 1.0.6 ausblenden.

BackWPup Warnung: Connection reset by peer


Seit der WordPress Umstellung auf PHP7 kommt es zu einer Warnung beim Erstellen einer Sicherung mit dem BackWPup Plugin:

„WARNUNG: ftp_close(): SSL_read on shutdown: Connection reset by peer (104)“.

Diese Warnung ist auf ein Bug seit dem Update auf PHP 7.1.24 zurückzuführen und betrifft auch ftp_put() Funktion. Ein entsprechender Bericht ist zu finden unter Bug #77151.

Es hängt auf jeden Fall mit der expliziten FTP SSL Verbindung zusammen. Die Verbindung wird aufgebaut, Backup erstellt und erfolgreich auf den FTP Server übertragen. Beim Trennen der Verbindung wird anscheinend die SSL Verschlüsselung nicht korrekt geschlossen und zurückgesetzt.

Die vorläufige Abhilfe bis zum Bugfix schaft das Deaktivieren der expliziten SSL Verbindung in den BackWPup Einstellungen.

WordPress Gutenberg Editor mit TinyMCE ersetzen


Seit der WordPress Version 4.9.8 gibt es den neuen Gutenberg Block Editor, allerdings nur als Empfehlung.Seit dem Update auf WordPress 5.0.1 wurde er zum Standard. Leider ist Gutenberg immer noch in der Entwicklung und bittet nicht all die Funktionen, Blocks und Buttons wie TinyMCE.

Wer ihn nicht mag und arbeitet lieber mit dem klassischen TinyMCE kann den letzten wieder aktivieren.

In den Einstelungen unter TinyMCE (Advanced) ⇒ Erweiterte Optionen das Häckchen bei Toolbars for the Classic Blocks in the Block Editor (Gutenberg) lässt man weg. Bei Replace the Block Editor with the Classic Editor wird gesetzt und die Änderungen speichern.

Nun kann man wie gewohnt mit dem vertrauten TinyMCE Editor arbeiten.




WordPress: Hook Infos auslesen


Bei der Entwicklung eigener Themen oder Plugins mit WordPress ist es nützlich zu wissen, welche Callback-Funktionen an welchen Hooks hinzugefügt wurden. Viel wichtiger ist aber deren Priorität und der Typ, Action oder Filter. Denn mit add_action() und add_filter() sind sie als solche noch gar nicht endgültig definiert wie man weiter untern sehen wird. Diese Funktionen sind sogar vertauschbar, ohne einen Fehler zu generieren. So kann schnell eine Verwirrung entstehen, wenn der Programmierer die falsche Funktion benutzt. Man würde zum Beispiel anhand des Aufrufs einen Filter erwarten, der keiner ist.

In WordPress 4.7.0 wurde für die Verwaltung der Action- und Filter-Callbacks die neue WP_Hook-Klasse eingeführt. Die globale Variable $wp_filter ist seit dem ein eindimensionaler Array der WP_Hook-Klassenobjekte. Sowohl die Action- als auch Filter-Callbacks werden in diesen Objekten gespeichert. Vor der WordPress Version 4.7.0 war $wp_filter ein mehrdimensionaler Array der die Performance ziemlich belastet hat.

Was aber wenn man herausfinden möchte ob ein Hook-Callback ein Filter oder eine Aktion ist? Oder mit welcher Priorität sie ausgeführt werden? Aktionen werden beim Hinzufügen genauso behandelt wie die Filter. Man könnte einen Filter mit add_action() hinzufügen wie auch umgekehrt eine Aktion mit add_filter() und es würde keine Rolle spielen. Sie landen alle gleicherweise in dem $wp_filter-Array. Ohne Rücksicht auf den Typ. Die add_action()-Funktion ist nur ein Alias für add_filter().