Oxygen nach Bricks
War ich lange Zeit mit Oxygen zufrieden, so wuchs irgendwann die Unzufriedenheit. Eine Alternative sollte her. Diese habe ich für mich mit Bricks gefunden.
Während Oxygen als Plugin installiert wird, so wierd Bricks als Theme installiert. Und da Oxgen die Verwendung von Themes komplett „abschaltet“, macht es einen Wechsel zwar nicht unmöglich, aber doch etwas aufwändig.
Die Migration selbst erfolgt auf der Live Installation, wobei man selbst entscheiden kann, ob Besucher erst am Ende die migrierte Seite sehen, oder ob man Zug um Zug die Seiten einzeln freischaltet.
Doch gehen wir die Schritte einzeln durch:
1. Vorbereitung
Für den Wechsel sind zwei Dinge Grundvoraussetzung:
- Sicherung der Datenbank
Dies solte für alle gröbere „Umbauten“ selbstverständlich sein - Kopie der Live-Site
Diese wird für einleitende Tests und den Zugriff auf Oxygen-Inhalte während der Migation benötigt
2. Identifizierung der Oxygen-Scripts
Diesen Schritt darf man nur auf der Staging Site durchführen, da hierbei die Seite während der Identifizierung ausfällt. Identifiziert werden müssen alle Plugin-Scripts, die mit Oxygen in Verbindung stehen.
Hierzu muss im Ordner „wp_content/mu_plugins“ ein php-Script erstellt werden.
Die einzige Aufgabe dieses Scripts ist es, alle Plugins zu aufzulisten.
<?php
add_filter( 'option_active_plugins', 'wphelp_option_active_plugins', 1);
function wphelp_option_active_plugins ( $plugin_list ){
// Show plugins list
// oxygen/functions.php
?><pre><?php
print_r($plugin_list);
?></pre><?php
//Stop proccess
exit;
}
ACHTUNG
Die Anweisung „exit“ stoppt den Prozess und die Ausgabe, sowie das Laden von Wordpress. Aus diesem Grund sollte dieses Script nur auf der Staging-Installation verwendet werden.
Beispielsweise Ausgabe:
Array
(
[0] => advanced-custom-fields-pro/acf.php
[1] => oxygen/functions.php
[2] => oxygen-gutenberg/oxygen-gutenberg.php
[3] => wp-mail-smtp/wp_mail_smtp.php
)
3. Vermeiden des Ladens von Oxygen
Diesen Schritt kann man erst auf der Staging-Seite testen, bevor man ihn in der Live -Seite implementiert.
Es geht nun darum, beim Aufruf einer Seite genau jene Plugins am Laden zu verhindern, die für die Funtionalität von Oxygen benötigt werden. Dafür wird im Script der selbe Filter wie im vorhergehenden Schritt verwendet. Die Funktionsweise des Filters sollte selbsterklärend sein.
Im konkreten Fall habe ich hierbei auch bereits eine Abfrage auf die aufrufende IP-Adresse verwendet. Der Ausdruck „<YOUR IP-Address>“ ist durch die eigene IP-Adresse des Internetzugangs zu ersetzen. Sollte der eigene Interzugang eine dynamische Adresse haben, so kann es während der Migration auch erforderlich sein diesen Wert mehrmals anzupassen.
Die Liste der „unset“ Anweisungen ist beispielhaft und hängt von den eigenen installierten Plugins ab.
<?php
if(getIP() == '<YOUR IP-Address>') {
add_filter( 'option_active_plugins', 'wphelp_option_active_plugins', 1);
}
function wphelp_option_active_plugins ( $plugin_list ){
unset( $plugin_list[array_search( 'oxygen-gutenberg/oxygen-gutenberg.php', $plugin_list)]);
unset( $plugin_list[array_search( 'oxygen/functions.php', $plugin_list)]);
return $plugin_list;
}
function getIP()
{
foreach (array('REMOTE_ADDR', 'HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED') as $key)
{
if (array_key_exists($key, $_SERVER) === true)
{
foreach (array_map('trim', explode(',', $_SERVER[$key])) as $ip)
{
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false)
{
return $ip;
}
}
}
}
}
4. Die Migration
Hat man nun für eigene Zugriffe das Laden von Oxygen verhindert, kann man das Bricks Theme selbst, sowie das Bricks-Child-Theme installieren. Das Bricks-Child-Theme sollte das aktive Theme sein.
Und nun kann das Migrieren der Seiten und Templates beginnen. Den Daten für Oxygen passiert dabei nichts, da die Arbeit auf einem eigenen „Layer“ der Seiten erfolgt. Man hat aber, ohne das Script zu deaktivieren, keinen Zugriff auf die Oxygen-Daten und das Rendering von Oxygen. Dafür verwendet man die vorab angelegte Kopie, bei der man obiges Script nicht aktiviert.
Nachdem man das Theme von Bricks installiert hat, kann man nun mit Bricks alle notwendigen Templates erstellen und die Seiten entsprechend neu gestalten. Hat man die Seiteninhalte selbst mit Oxygen bearbeitet, so muss man den Inhalt nun nach Bricks übertragen. Kombinationen über Gutenberg-Inalt und Templates kann man auch unter Bricks genauso handhaben.
Für Seiten, die direkt mit Oxygen erstellt wurden, kann man eine teilweise Abkürzung nehmen. Zu diesem Zweck kopiert man von der Staging Site die jeweilige Ausgabe in den Gutenberg-Editor. Setzt man in den Einstellungen von Bricks unter „Allgemein“ die Option „Gutenberg-Daten in Bricks laden“, so versucht Bricks die Gutenberg-Daten in den Bricks Editor zu migrieren. Man erspart sich hierbei zumindest das Abschreiben, oder auch das Kopieren, der einzelnen statischen Textblöcke. Die Migrierung aus dem Gutenberg-Editor funktioniert zwar nicht hundertprozentig, aber sie leistet gute Dienste.
WICHTIG:
Die Übernahme von Gutenberg-Daten erfolgt nur, wenn der „Bricks-Layer“ noch keine Daten enthält.
5. Fallstricke
Die Tücke liegt wie immer im Detail
- will man die Umstellung seitenweise freischalten, so muss man nach jeder fertiggestellten Seite im Script die Abfrage für den Filter anpassen
- verwendet man mit einem Plugin wie „Code Snippets“ zusätzliche Erweiterungen,die von Oxygen abhängig sind, so können diese Scripts Abstürze von Wordpress bewirken. Es sind in solchen Fällen zusätzliche Abfragen in diese Scripts einzubauen
- mit aktivem Filter darf die Plugin-Liste in der Live-Site nicht verändert werden, da sonst die temporär deaktivierten Scripts tatsächlich deaktiviert werden
- wenn beim Versuch ein Bricks-Template zu bearbeitenein Fehler ausgegeben wird, so hilft es kurz das aktive Theme zu wechseln und wieder zurück zu wechseln
- und alles was noch passieren kann, worüber ich aber zufällig nicht gestolpert bin
6. migrierte Seiten
Die Liste der Seiten, die ich mit dieser Vorgangsweise migriert habe
- www.seastar.at
einschließlich WooCommerce Shop