Was, wenn eine WordPress Min Version erforderlich ist?
Folgendes Problem: Ein WordPress Theme verlangt als minimale Voraussetzung WordPress 3.0-beta. Man kann das ja 10x auf die Packung schreiben, die Leute lesen es eh nicht. Jetzt sind aber jede Menge Funktionen in dem Theme enthalten, die es vor der Version 3.0 nicht gab.
Mit if ( function_exists('...') ) abzufragen bringt auch nichts. Es würde zwar Fehlermeldungen verhindern, aber die Funktionalität wäre beeinträchtigt. Und Funktionen wie is_multisite() nachzuprogrammieren, macht einfach keinen Sinn. Es würde sich durch das ganze Theme ziehen.
Es gibt 2 Möglichkeiten, die Sache abzufangen. Einmal ein brutales wp_die() oder auf das Default Theme von WordPress switchen. Bei Variante 2 half mir Sergej Müller mit einem Tip.
// Variante wp_die() global $wp_version; if ( !version_compare( $wp_version, '3.0-beta', '>=' ) ) { wp_die( 'Our Theme need WordPress 3.0-beta.', 'Theme Error!'); } // Variante Switch Theme global $wp_version; if ( !version_compare( $wp_version, XF_WP_MIN_VERSION, '>=' ) ) { update_option( 'template', 'default' ); update_option( 'stylesheet', 'default' ); delete_option( 'current_theme' ); $theme = get_current_theme(); do_action('switch_theme', $theme); add_action('admin_notices', 'show_theme_notices'); } function show_theme_notices() { echo sprintf( '<div class="error"><p><strong>Mein cooles Theme</strong> '. __('requires at least WordPress %s!', 'my_textdomain').' '. __('Please upgrade your WordPress.', 'my_textdomain') . '</p></div>', XF_WP_MIN_VERSION ); }
Nachteil der ersten Variante: Das Frontend läuft nicht. Dank Sergejs Hilfe bekommt der Nutzer nun eine Meldung, warum das Theme gewechselt wurde. Vorher hatte ich nur einen Redirect auf die themes.php drin.
- Kategorie: WordPress
- Tags: template, theme, WordPress
- Kommentar-Feed | Trackback URL
- Gelesen: 4722 | Heute: 7
- einen Kommentar schreiben
2 Kommentare


Aber aufpassen, der Hook admin_notices ist erst seit 2.7 sauber übergreifend drin, wenn ich richtig bin, drin. Sollte also daher auch eine Alternative haben.
Ja gut, das kann man ja mit function_exists abfangen, dann hat er halt keine Message. Pech gehabt, alles geht nicht.