{"id":22809,"date":"2025-01-27T14:56:13","date_gmt":"2025-01-27T13:56:13","guid":{"rendered":"https:\/\/blog.chbworld.net\/?p=22809"},"modified":"2025-01-27T14:59:37","modified_gmt":"2025-01-27T13:59:37","slug":"update-der-bilder","status":"publish","type":"post","link":"https:\/\/blog.chbworld.net\/index.php\/2025\/01\/27\/update-der-bilder\/","title":{"rendered":"Update der Bilder"},"content":{"rendered":"<p align=\"justify\">Wie schon zuletzt berichtet, liegen die gro\u00dfen Hauptbilder immer noch auf Google, da es einfach kein Plugin gibt, das verlinkte Bilder auf WordPress holt. Alle holen nur das in den Posts angezeigte Bild, nicht das verlinkte. <\/p>\n<p align=\"justify\">Man k\u00f6nnte seinen Blog wieder mal durchschauen und das manuell korrigieren, aber \u2013 jetzt wo ich da schon mit der API rumspiele \u2013 das k\u00f6nnte ein Job bis zur Pensionierung werden, weil auf den beiden Blogs sind es \u00fcber 2000 Posts mit knapp 16000 Bildern auf Google.<\/p>\n<p align=\"justify\">Daher gehe ich zur Variante b und <em>skripte das mal schnell<\/em>. Da haben sie aber einige Hindernisse in die \u2018mal schnell\u2019 Variante eingebaut. Eines der vordringlichsten: Provider wollen es ganz einfach ganz sicher machen. Sie haben daher versucht die REST API zu killen. Das f\u00e4llt bei meinem darin auf, da\u00df der normale Rewrite fehlt und man statt <code>\/wp-json<\/code> die lange Form <code>\/index.php\/wp-json <\/code>schreiben mu\u00df. Dann bekommt man Zugriff und kann ohne jegliche Authentifizierung vieles lesen. Auch fragw\u00fcrdige Sicherheit. Wenn man dann versucht seine Medien raufzuladen oder die Posts zu ver\u00e4ndern, dann verlangt wordpress eine Authentifizierung. Nur egal was man da tut, es geht nicht. Langes Suchen sp\u00e4ter: Sie haben den Authentifizierungs Header einfach gekilled. Damit kann man das nicht. Der Support schl\u00e4gt vor, ich k\u00f6nnte mir doch gleich einen vServer bei ihnen mieten (wer das Geld f\u00fcr das feature ausgeben will\u2026). Wollte ich nicht.<\/p>\n<p align=\"justify\">Mit dem Hack, das man nat\u00fcrlich das .htaccess file im wordpress Folder setzen kann und das nicht gesperrt ist, kann man den Header aber wiederbekommen und schon darf man auch wieder per REST-API schreiben (wenn man sich vorher einen API-Key eingerichtet hat). Die spannenden Eintr\u00e4ge sind:<\/p>\n<pre>RewriteEngine on\nRewriteCond %{HTTP:Authorization} ^(.*)\nRewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]\nSetEnvIf Authorization &quot;(.*)&quot; HTTP_AUTHORIZATION=$1<\/pre>\n<p align=\"justify\">Damit stehe ich aktuell bei dem Stand:<\/p>\n<ul>\n<li>\n<div align=\"justify\">Ich habe alle Posts gezogen und nach Bildern durchsucht. Es lebe der Spa\u00df mit regex, um Bild-URLs zu finden, die in Konstrukten \u00e4hnlich <code>&lt;a href=&quot;xxx&quot; &lt;img src=&quot;yyy&quot;&gt;&gt;<\/code> zu finden sind.<\/div>\n<\/li>\n<li>\n<div align=\"justify\">Ich habe schon alle Bilder auf meinen lokalen Rechner kopiert und alle entsprechenden Daten gezogen<\/div>\n<\/li>\n<li>\n<div align=\"justify\">Ich habe die APIs durchgetestet und kann Beitr\u00e4ge und Medien erzeugen<\/div>\n<\/li>\n<\/ul>\n<p>Jetzt fehlt <em>nur mehr<\/em>:<\/p>\n<ul>\n<li>Neue Bilder zum Post hochladen<\/li>\n<li>Posts modifizieren<\/li>\n<li>Alte Thumbnail-Bilder l\u00f6schen<\/li>\n<\/ul>\n<p>Wenn ich das erledigt habe, gibt es wieder einen Post dazu. Mal sehen ob es Sinn macht, das Skript zu posten, damit es andere leichter haben Google zu verlassen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie schon zuletzt berichtet, liegen die gro\u00dfen Hauptbilder immer noch auf Google, da es einfach kein Plugin gibt, das verlinkte Bilder auf WordPress holt. Alle holen nur das in den Posts angezeigte Bild, nicht das verlinkte. Man k\u00f6nnte seinen Blog wieder mal durchschauen und das manuell korrigieren, aber \u2013 jetzt wo ich da schon mit der API rumspiele \u2013 das k\u00f6nnte ein Job bis zur Pensionierung werden, weil auf den beiden Blogs sind es \u00fcber 2000 Posts mit knapp 16000 Bildern auf Google. Daher gehe ich zur Variante b und skripte das mal schnell. Da haben sie aber einige Hindernisse<\/p>\n","protected":false},"author":1,"featured_media":19537,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-22809","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-abouttheblog"],"_links":{"self":[{"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/posts\/22809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/comments?post=22809"}],"version-history":[{"count":2,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/posts\/22809\/revisions"}],"predecessor-version":[{"id":22811,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/posts\/22809\/revisions\/22811"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/media\/19537"}],"wp:attachment":[{"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/media?parent=22809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/categories?post=22809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.chbworld.net\/index.php\/wp-json\/wp\/v2\/tags?post=22809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}