Category: Wordpress

The response is not a valid JSON response. [Workaround] (Update)

Nach über vier Jahren wollte ich mal wieder einen Artikel posten und wurde im Editor nach kurzer Eingabe einiger Zeichen mit folgender Fehlermeldung begrüßt:


Updating failed. Error message: The response is not a valid JSON response.

Zunächst vermutete ich die Ursache bei einem meiner Plugins. Aber auch nachdem ich ein paar deaktiviert hatte, veränderte sich nichts. Im Frontend wurde mir immer nur Auto-Draft angezeigt, statt meiner eigentlichen Überschrift.

Die einzige für mich nachvollziehbare kurzfristige Lösung bzw. Workaround war die Installation und Aktivierung vom Classic Editor. Damit hat es auf Anhieb wieder wie gewohnt funktioniert.

Die Fehlermeldung scheint eine Vielzahl von Ursachen haben zu können. Nachdem ich noch ein bisschen weiter gesucht hatte, fand ich noch den Hinweis auf die Entwicklertools in Chrome, welche mit Strg+Umschalt+i aktiviert werden können. Die Console zeigte mir auch gleich eine ganze Latte von Einträgen an:


Mixed Content: The page at 'https://www.bugblog.de/wp-admin/post.php?post=1661&action=edit' was loaded over HTTPS, but requested an insecure resource 'http://www.bugblog.de/wp-json/wp/v2/posts/1661?_locale=user'. This request has been blocked; the content must be served over HTTPS.

Offensichtlich läuft mein Blog mittlerweile über HTTPS, nur Worpress habe ich das wohl bisher noch nicht mitgeteilt, so das intern die URL noch ohne das “s” aufgerufen wird. Also unter Settings->General die Einträge bei “WordPress Address (URL)” und “Site Address (URL)” aktualisiert. Damit verschwanden zwar die Einträge in der Console, aber für die Erstellung eines neuen Post muss ich weiterhin den Classic-Editor nutzen.

Falls jemand weitere Ansätze für die Fehlersuche hat, würde ich mich über einen entsprechenden Kommentar freuen.

Update: Ursächlich scheint irgend eine installierte Erweiterung zu sein. Nachdem ich jetzt mal alle Erweiterungen deinstalliert habe, funktioniert es jetzt wieder. Im Laufe der Zeit hatten sich einige Erweiterungen angesammelt und vermutlich sind nicht alle mit dem Gutenberg-Editor kompatibel.

Notice: wpdb::escape ist seit Version 3.6 veraltet!

Bei der Aktualisierung einer WordPress Installation von 3.5 auf 3.6 erschien folgende Meldung mehrfach auf dem Dashboard


Notice: wpdb::escape is deprecated since version 3.6! Use wpdb::prepare() or esc_sql() instead. in /var/www/web4/html/wordpress/wp-includes/functions.php on line 2871 Notice: wpdb::escape ist seit Version 3.6 veraltet! Benutze stattdessen wpdb::prepare() or esc_sql(). in /var/www/project/wordpress/wp-includes/functions.php on line 2871

In Zeile 2781 der Datei “functions.php” steht jedoch die Funktion, welche die Meldung ausgibt. Von dem escape-Aufruf ist weit und breit keine Spur. Mittels grep habe ich dann nach allem was ” escape(” beinhaltet gesucht und manuell ersetzt.


grep -r ' escape(' ./

Die Herausforderung ist, das als Ersatz für wpdb::escape zwei Funktionen genannt werden. Welche davon jetzt die Richtige ist, habe ich abhängig davon gemacht, ob die Eingabe nur ausgegeben werden sollte, dann wpdb::prepare, oder in die Datenbank gespeichert werden soll, dann esc_sql.

Nachdem ich alle Dateien “behandelt” hatte, mit der Dateiendung php, erschien weiterhin die Meldung auf dem Dashboard. Erst das Auskommentieren der gesamten “escape”-Funktion brachte eine neue Erkenntnis:


Warning: array_map() expects parameter 1 to be a valid callback, class 'wpdb' does not have a method 'escape' in /var/www/project/wordpress/wp-content/plugins/broken-link-checker/includes/link-query.php on line 295
Warning: implode(): Invalid arguments passed in /var/www/project/wordpress/wp-content/plugins/broken-link-checker/includes/link-query.php on line 300

Der eigentliche Übeltäter scheint somit die Erweiterung “Broker link Checker” zu sein. Nachdem diese deaktiviert wurde, verschwand die Meldung. Die angepassten Dateien habe ich unverändert gelassen.

Bei meinem grep wurde die Datei “link-query.php” nicht aufgeführt, da “escape” per array_map aufgerufen wurde:


$s_parser_type = array_map(array(&$wpdb, 'escape'), $s_parser_type);

WordPress Update ohne FTP aktualisieren

Erst dachte ich, es würde an den Rechten des Dateisystems liegen, aber selbst nachdem ich der Gruppe und allen anderen Schreibrechten gegeben hatte, war kein Auto-Update möglich. Internet fand ich den Tipp den upgrade-Ordner in wp-content zu entfernen. Aber auch dies half nichts. Geholfen hat letztlich ein Eintrag in die wp-config.php:

[PHP]
define(‘FS_METHOD’,’direct’);
[/PHP]

Gefunden habe ich es hier: http://www.hongkiat.com/blog/update-wordpress-without-ftp/

Wie im Blog beschrieben habe ich den Code ganz unten eingefügt in der wp-config.php:

[PHP]
/* That’s all, stop editing! Happy blogging. */

if ( !defined(‘ABSPATH’) )
define(‘ABSPATH’, dirname(__FILE__) . ‘/’);
require_once(ABSPATH . ‘wp-settings.php’);

define(‘FS_METHOD’,’direct’);
[/PHP]

Wichtig: Vor jedem Update ein Backup von der Datenbank und den Dateien anfertigen.

WordPress SEO: Doppelte Titel – Duplicate title tags

In den Webmaster Sitemap Tools (https://www.google.com/webmasters/tools/) gibt es unter Kategorie Diagnose >> HTML Vorschläge u.a. einen Punkt, welcher sich mit doppelten Titel-Tags bzw. Duplicate title tags befasst. Bei mir waren es schon über 70 Stück, was nach einer kurzen Analyse hauptsächlich daran lag, das bei Übersichtsseiten von Tags und Kategorien die Seitenzahl nicht mit in den Titel übernommen wurde. Problem erkannt und wie folgt, in der Datei /wp-content/themes/yourTheme/header.php, gebannt:

[PHP]
Vorher:
<?php bloginfo('name'); ?> <?php if ( is_single() ) { ?><?php } ?> <?php wp_title(); ?>

Nachher:
<?php bloginfo('name'); ?> <?php if ( is_single() ) { ?><?php } ?> <?php wp_title(); ?><?php if((int)$paged>0){echo ‘ – Seite: ‘.((int)$paged);} ?>
[/PHP]

Die Seitenzahl wird nur angezeigt, sobald es mehr als eine Seite gibt. Mal schauen wie lange jetzt wieder Google braucht um die Webmasters Sitemap zu aktualisieren.

Blog Update

Nachdem schon nachgefragt wurde, habe ich es jetzt geschafft auch endlich meinen eigenen Blog upzudaten. Die Anleitung dazu hatte ich bereits veröffentlich. Dabei kam es vielleicht zu einer kleinen sprachlichen Ungenauigkeit, gerade in Bezug auf die Oxid-Geschichte. Für WordPress gibt es keine speziellen Update Pakete. Für das Update läd man einfach das ganze normale volle Paker herunter, welcher man auch für eine frische Installation verwenden würde.