Bei der Verwendung von Themes von kommerziellen Theme-Plattformen ist manchmal Vorsicht geboten. Immer wieder passiert es, dass Theme-Entwickler aufhören ihre Themes zu pflegen und damit die Benutzer zum Wechsel oder zur Inkaufnahme der durch veraltete Themes entstehenden Probleme nötigen.
So auch geschehen mit dem „Aphrodite Theme by Pulpipatan Peerapong“. Das Theme wurde hauptsächlich zwischen 2013 und 2014 verkauft und mit Updates versorgt. Dann wurde das Theme aus einer großen, bekannten Theme-Plattform entfernt.
Schaut man sich parallel den Veröffentlichungszyklus von PHP an, stellt man fest, bereits PHP 7.0, welches jetzt schon wieder als End-of-Life-Version gilt, damals noch nicht offiziell existierte. Da gerade bei dem Sprung 5.6 -> 7.0 viele „breaking changes“ eingeführt wurden, liegt eine Inkompatibilität mit PHP 7.0 sowie den Nachfolgeversionen und dem Theme nahe.
Und so war es auch. Zum einen wurden im Code desöfteren mehrere „default“-Cases in Switch-Anweisungen verwendet (was vor PHP 7.0 geduldet, aber nicht empfohlen wurde).
switch($portfolio_type)
{
case 'External Link':
default:
$return_html.= '<div class="portfolio200_shadow">';
$return_html.= '<a href="'.$permalink_url.'"><img src="'.$image_url[0].'" alt="" class="portfolio_img"/><div class="portfolio200_overlay"><img src="'.get_stylesheet_directory_uri().'/images/icon_li>
$return_html.= '</div>';
break;
// end external link
case 'Portfolio Content':
default:
$return_html.= '<div class="portfolio200_shadow">';
$return_html.= '<a href="'.get_permalink($recent_portfolio->ID).'"><img src="'.$image_url[0].'" alt="" class="portfolio_img"/><div class="portfolio200_overlay"><img src="'.get_stylesheet_directory_>
$return_html.= '</div>';
break;
wird
switch($portfolio_type)
{
case 'External Link':
$return_html.= '<div class="portfolio200_shadow">';
$return_html.= '<a href="'.$permalink_url.'"><img src="'.$image_url[0].'" alt="" class="portfolio_img"/><div class="portfolio200_overlay"><img src="'.get_stylesheet_directory_uri().'/images/icon_li>
$return_html.= '</div>';
break;
// end external link
case 'Portfolio Content':
$return_html.= '<div class="portfolio200_shadow">';
$return_html.= '<a href="'.get_permalink($recent_portfolio->ID).'"><img src="'.$image_url[0].'" alt="" class="portfolio_img"/><div class="portfolio200_overlay"><img src="'.get_stylesheet_directory_>
$return_html.= '</div>';
break;
Zum anderen mussten Parameter einiger Funktionen geändert werden, die an PHP-Core-Funktionen durchgereicht werden und daher nunmehr unpassend waren:
function start_lvl(&$output, $depth) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class='children'>\n";
}
wird
function start_lvl(&$output, $depth = 0, $args = Array()) {
$indent = str_repeat("\t", $depth);
$output .= "\n$indent<ul class='children'>\n";
}
Während diesen Arbeiten fiel auf, dass diese veraltete Version des „Aphrodite“-Themes auch eine veraltete TimThumb-Version (2.8.9) beinhaltete, die unter bestimmten Bedingungen einige Sicherheitslücken aktiviert. Daher wurde TimThumb ebenfalls gleich auf die aktuellste Version (2.8.14) gezogen. Dennoch ist hier Vorsicht geboten: Laut dem Entwickler wird TimThumb nicht mehr mit Updates versorgt und solle nicht mehr verwendet werden. Im Zweifel empfiehlt sich die vollständige Entfernung TimThumb’s und seiner Spuren. In diesem Fall müssen jedoch noch weitere Änderungen am „Aphrodite“-Code vorgenommen werden.
Zudem wurde die jquery-ui-Version aus Kompatibilitätsgründen von 1.8.10 auf 1.9.2 angehoben.
Ein entsprechendes Patchfile, mit dem die Änderungen gegen eine bestehende und eventuell angepasste „Aphrodite“-Theme-Version durchgeführt werden können, steht hier zur Verfügung:
Erstellt wurde das Patchfile wie folgt:
diff -Naur aphrodite-old/ aphrodite/ > aphrodite.patch
Und kann auf einen bestehenden Ordner wie folgt angewendet werden:
cd aphrodite-old && patch -b < aphrodite.patch
Selbstverständlich können die Änderungen aus dem „aphrodite.patch“-File auch einfach manuell angewendet werden. Dazu einfach das Patchfile in einem beliebigen Texteditor öffnen und die Änderungen ablesen.