Upgrade WordPressu po třech letech při nainstalovaném pluginu WP-Hive
Jakkoliv zní nadpis článku hrozivě pro člověka znalého problémů, se kterými se při aktualizaci wordpressu ze starší verze na mnohem novější může setkat, tak při dodržení určitých pravidel si můžeme v mnohém práci ulehčit.
Nastíním situaci, kterou jsme v aktuálně řešili pro jednoho z našich zákazníků:
Bylo potřeba aktualizovat jádro a všechny pluginy WP na stránkách http://www.collegiummarianum.cz/ Připomínám že se jednalo o několik let starou verzi WP s poměrně velkým množstvím různých pluginů, které mimo jiné zajišťovaly například multijazyčný běh webu nebo možnost propojení několika šablon pod jednou instalací WP (plugin wp-hive). Vynechám postup samotného upgradu, který se dá snadno dohledat. Jeden z dobrých návodů je například zde: http://www.cwordpress.cz/wordpress-manual/upgrade-aktualizace-wordpress.html . Jenom si dovolím trochu doplnit tento návod o malou radu. Před samotnou instalací nové verze přejmenujte ve složce Wp-content složku plugins například na plugins1. Tím dojde k deaktivování všech pluginů. Předejdete tím problémům, které mohou nastat pokud nějaký plugin se ,,nebude kamarádit“ s novou verzí WP. Po instalaci složku přejmenujte zpět na plugins a poté je potřeba v administraci jeden po druhém zapínat pluginy. Pokud nějaký začne dělat potíže, tak alespoň poznáte který.
Jakmile bylo upgradováno, nastal onen hrozivý okamžik zjištění, jestli vůbec web běží. A co myslíte? Měl ho tam. Samozřejmě web neběžel, to by bylo až moc štěstí na čtvrteční večer. Vyskočila následující hláška:
Fatal error: Call to undefined function wp_cache_get() in …
následující cesta se bude u vás nejspíš lišit, ale pro náš problém není podstatná. Jelikož se nešlo ani dostat do administrace, byl celý problém o to horší, protože bylo jasné, že při deaktivování všech pluginů před instalací se jedná o chybu závažnějšího charakteru, ale jak si následně ukážeme se snadným řešením. Po celkem chvilkovém zkoušení pokus omyl jsem přišel na problém, který způsoboval plugin WP-hive. Řešení je následující:
Ve složce wp-content v souboru db.php přidat kód (místo kódu, který tam je):
1
2
3
4
5
6
7
8
9
|
if ( ! defined('ABSPATH') ) die("Hmmm..."); //require_once( ABSPATH . WPINC . '/wp-db.php' ); if ( ! defined( 'WP_PLUGIN_DIR' ) ) define( 'WP_PLUGIN_DIR', WP_CONTENT_DIR . '/plugins' ); global $wpdb; if ( !isset( $wpdb ) ) $wpdb = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST ); if ( file_exists(WP_PLUGIN_DIR . '/wp-hive/do-prefix.php')) require_once( WP_PLUGIN_DIR . '/wp-hive/do-prefix.php'); |
a následně v souboru do-prefix.php (wp-content/plugins/wp-hive/do-prefix.php) zakomentovat posledních pár řádků:
1
2
3
4
|
//wphive_force_plugin_active(); // Check if this is a fresh install and fix Siteurl for proper redirect //wphive_siteurl_for_install($wphive->current_site->path, $table_prefix, $orig_hostname, $wphive->current_site->host); |
Tím je vyřešeno a můžeme se dostat do administrace aktivovat ostatní pluginy.
Tím končí náš první díl upgrade webu collegiummarianum.cz a jim přidruženým (letnislavnost.cz baroknipodvecery.cz a tynskaskola.cz).
Druhý díl pro vás připravíme, až dokončíme ještě větší výzvu a to přechod z pluginy qtranslator na wpml. A to v případě 4 webů přes wp-hive bude oříšek.