WP-Appbox zeigt keine Icons / Screenshots mehr an – Problemlösung

Das WordPress-Plugin „WP-Appbox“ ist wohl mit abstand eins der bekanntesten WordPress-Plugins wenn es darum geht verschiedene AppStore-Links bequem mittels Shortcode zu setzen. Kürzlich ist uns allerdings aufgefallen, dass bei manchen WordPress-Installationen keine entsprechenden Shop-Icons bzw. die Screenshots einer App nicht mehr auf der fertigen Artikelseite angezeigt werden. Wir zeigen euch in diesem Beitrag wie ihr dieses Problem mit Hilfe einer Codeänderung beheben könnt.

Problembeschreibung

In der jeweiligen App-Box wird euch nicht mehr das App-Icon angezeigt? Sämtliche andere Dinge wie Name der App, der Entwickler sowie der Preis werden euch dagegen korrekt angezeigt? Dann seid ihr von diesem Problem betroffen und könnt unsere nachfolgende Problemlösung nutzen.

Ursache

Ausgelöst wird das Problem im originalen Code durch ein nicht gefülltes „$getImage[‚body‘]„. Dieser Fehler tritt allerdings auch nur auf, falls ihr den internen Proxy des WP-Appbox-Plugins verwendet. Doch zum Glück lässt sich dieser Fehler leicht fixen.

Lösung

Um das Problem zu beheben, müsst ihr die Datei „createoutput.class.php“ des WP-Appbox Plugins editieren. Diese befindet sich im Normalfall in dem folgenden Verzeichnis: „/wp-content/plugins/wp-appbox/inc/“ eurer Homepage.

Nachdem ihr diese Datei geöffnet habt, müsst ihr den kompletten Codeblock der „function returnImageProxyURL“ (sollte sich zwischen Zeile 108 und 119 befinden) durch die folgende korrigierte Variante ersetzen:

	function returnImageProxyURL( $imageURL ) {
		if ( !get_option('wpAppbox_imgProxy') || !ini_get( 'allow_url_fopen' ) ) return( $imageURL );
		if ( 0 === strpos( $imageURL, $this->cleanURL( get_site_url() ) ) ) return( $imageURL );
		
		if ( 0 !== strpos( $imageURL, 'http' ) ) {
			if ( 0 === strpos( get_site_url(), 'https' ) ) $imageURL = 'https:' . $imageURL;
			else $imageURL = 'http:' . $imageURL;
		}
		
		if ( FALSE === filter_var( $imageURL, FILTER_VALIDATE_URL ) ) return( $imageURL );
		if ( !wpAppbox_ImageCache::checkImageCType( $imageURL ) ) return( $imageURL );

		// --- FIX STARTS HERE ---
		// We need to actually fetch the image data
		$response = wp_remote_get( $imageURL );

		// Check if the request was successful and not an error
		if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 ) {
			return $imageURL;
		}

		$imageBody = wp_remote_retrieve_body( $response );
		$contentType = wp_remote_retrieve_header( $response, 'content-type' );

		// Fallback to jpeg if content-type isn't found, though it's better to be dynamic
		$mime = !empty($contentType) ? $contentType : 'image/jpeg';
		
		$imageURL = 'data:' . $mime . ';base64,' . base64_encode( $imageBody );
		// --- FIX ENDS HERE ---

		return( $imageURL );
	}

Nachdem ihr den alten Codeblock durch diesen neuen ersetzt habt, könnt ihr die createoutput.class.php Datei wieder abspeichern und hochladen. Spätestens nachdem ihr euren WordPress-Cache sowie euren Browser-Cache geleert habt, solltet ihr nun wieder die passenden Icons zu den jeweils verlinkten Apps sehen.

Unsere editierte Funktion kümmert sich zudem um eine bessere Fehlerbehandlung sowie akzeptiert dynamische MIME-Typen – so funktionieren nicht nur JPG-Icons sondern auch PNGs, WebP und Co..

Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

* gesponserter Link
Blogverzeichnis - Bloggerei.de