Twenty Twelve – Thema Aktualisierung
-
Hallo,
ich habe nun das Theme Twenty Twelve schon 2-mal von der Version 2.0 auf 2.1 upgedatet. Doch immer wenn ich mich erneut ins Dashboard einlogge, erscheint die Aktualisierung erneut.
Kann das damit zusammenhängen, dass ich vor dem Update die content.page.php, die header.php, die style.css und die functions.php kopiert und nach dem Update wieder eingefügt habe? Ich weiß das man das eigentlich besser mittels eines Child Themes machen sollte, ich habe mich da aber noch nicht ran getraut. Beim letzten Update hats auf diese Weise problemlos geklappt.
Danke für eure Hilfe,
Markus
-
Theme-Dateien zu patchen (umgangssprachlich: im Theme rumpfuschen) ist aus mehreren Gründen falsch: Änderungen werden bei Updates überschrieben, durch eine erneute Änderung überschreibst du den Theme Header mit der Versionsnummer, Änderungen sind schlecht nachvollziehbar, Probleme bei fehlerhaften Code lassen sich schlechter auffinden und beheben – kurz: erstelle ein Child Theme.
Dazu gibt es im Web zahlreiche Tutorials, z.B. bei Elma Studio. Damit erledigt sich dann auch das von dir geschilderte Probleme bei der Aktualisierung.
Alle anderen Tipps wären ein schlechter Support.
Hallo Bego, ich bin nun dabei ein Child Theme zu erstellen und habe bereits eine style.css nach der Anleitung angelegt.
Das Ganze sieht nun so aus:
/* Theme Name: Twentytwelve Child Theme URI: http://einfachmeditieren.net Description: Child Theme from Twentytwelve Author: Markus Doern Author URI: https://einfachmeditieren.net Template: twentytwelve Version: 2.0 */ /* Hier beginnen meine eigenen CSS Regeln */
Wie kann ich jetzt die bisherigen Änderungen der Parent Style.css übernehmen und in die Child Datei einbauen? Kann ich einfach den ganzen Parent Code reinkopieren?
Wenn ich eine neue functions.php Datei erstelle, kann ich diese 1:1 wie aus der Anleitung übernehmen oder muss ich dort Theme spezifische Änderungen vornehmen? Auch dort ist wieder die Frage wie ich die Änderungen der Partent Datei auf die Child Datei übertragen kann.
Sorry für die Anfängerfragen, ich bin lieber vorsichtig. Ich hoffe du weißt wie die Fragen gemeint sind 😉
Wenn etwas nicht klappen sollte kann ich notfalls den Child Ordner einfach wieder löschen oder?Danke und lg
MarkusDie Theme URI und Autor URI kannst du auch weglassen, es sein denn du möchtest gerne mal wieder öfters deine eigene Website aufrufen. 😉
Beim Parent Theme sollten aus den genannten Gründen überhaupt keine Änderungen vorgenommen werden. Wenn du Änderungen vorgenommen hast, würde ich das geänderte Theme und die Original-Version mit einem Diff-Tool (gibt es für jedes Betriebssystem) abgleichen und alle geänderten Template in das Child Theme kopieren.
Grundsätzlich soll das Child Theme eine Ergänzung des Parent Theme sein. Es enthält nur die Templates, bei denen auch Änderungen gegenüber dem Parent Theme vorliegen. Die Änderungen sollten in den Templates ausführlich kommentiert werden. Zum Beispiel:
/* * different size for featured image, * size was set in functions.php */ the_post_thumbnail('meine_groesse'); the_content(); // Fußzeile mit Post-Metaangaben gelöscht
Wo das nicht (so einfach) funktioniert ist die
functions.php
. Zur Erinnerung: Funktionsnamen müssen in PHP eindeutig sein, dürfen also nicht zweimal vorkommen. Genau das passiert aber, wenn du diefunctions.php
aus dem Parent Theme kopierst und im Child Theme einfügst.Statt dessen solltest du Funktionen, die im Parent Theme verwendet werden und so bestehen bleiben sollen, einfach nicht weiter aufführen – es reicht, wenn sie weiterhin im Parent Theme vorhanden sind.
Bei Funktionen, die hingegen im Parent Theme vorhanden sind, aber im Child Theme überschrieben werden sollen, prüfst du zuerst, ob sie „pluggable“ sind.
Damit ist gemeint, dass Funktionen eigentlich im Parent Theme mit einem if-Statement eingebunden werden sollen:if( !function_exists( 'sag_hallo' ) { function sag_hallo() { echo 'Hello Dolly'; } }
Nun kannst du im Child Theme eine eigene Funktion
sag_hallo
hinzufügen. Durch das if-Statement erscheint die Funktion nicht zweimal – alles gut.Etwas mühsamer ist es, wenn eine Funktion im Parent Theme verwendet wird, die nicht „pluggable“ ist. Dann kannst du dir aber immer noch damit behelfen, dass Funktionen üblicherweise als Aktion/Filter einem Hook zugewiesen werden. Wenn also im Parent Theme
add_filter( 'the_content', 'sag_hallo')
verwendet wird, kannst du die Funktion mit
remove_filter( 'the_content', 'sag_hallo' );
deaktivieren und statt dessen im Child Theme deine eigene Funktion einbinden:
add_action( 'the_content', 'sag_richtig_hallo' );
.Bei Child Themes kannst du eigentlich nicht viel falsch machen (aber viel lernen!), so lange du per FTP oder SSH Zugriff auf den Webserver hast, um das Verzeichnis zur Not (also z.B. beim berüchtigten White Screen of Death) umbenennen zu können. Nur Mut! (und Backups.) 🙂
Hallo Bego,
danke für deine ausführliche Antwort.
ich habe nun meine style.css soweit fertig. Bei der functions.php ist es ja so das beide geladen werden, sowohl die Datei vom Child als auch vom Parent Theme oder? Muss ich dennoch die Änderungen die ich bereits im Parent Theme gemacht habe in das Child Theme übertragen?
Folgende Code Zeile wurde in der Parent Datei hinzugefügt:
add_filter( 'the_seo_framework_force_title_fix', '__return_true' );
Die Child Datei sieht derzeit so aus:
<?php /** * Theme Name child theme functions and definitions */ /*—————————————————————————————————————————*/ /* Include the parent theme style.css /*—————————————————————————————————————————*/ add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' ); function theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); }
Hier habe ich gelesen, dass ich die header.php einfach 1:1 ins Child Theme kopieren kann:
https://wp-bistro.de/so-richten-sie-in-wordpress-ein-child-theme-ein/So habe ich es auch gemacht, ebenso mit der content.page.php
Wenn ich alle Dateien in den Child Ordner geladen habe, muss ich das Theme einfach noch aktivieren oder?
Wie muss ich dann bei künftigen Updates vorgehen? Ich nehme an das ich das Parent Theme normal aktualisieren kann und am Child Theme nichts machen muss?Danke,
Markus„Muss ich dennoch die Änderungen die ich bereits im Parent Theme gemacht habe in das Child Theme übertragen?“
Der Sinn des Child Themes ist, ausschließlich dort Änderungen vorzunehmen, um sie besser nachvollziehbar zu machen und bei Aktualisierung des Parent Themes zu erhalten. Wenn du jetzt doch Änderungen im Parent Theme vornimmst, bringt es wenig, ein Child Theme anzulegen.
„Wenn ich alle Dateien in den Child Ordner geladen habe, muss ich das Theme einfach noch aktivieren oder?“
Genau.
„Wie muss ich dann bei künftigen Updates vorgehen? Ich nehme an das ich das Parent Theme normal aktualisieren kann und am Child Theme nichts machen muss?“
Genau so.
Scheint zu funktionieren 🙂
Danke dir!
Jetzt hat sich doch noch eine Frage ergeben. Ich habe in der style.css im Child Theme die „hyphens“ Befehle geändert, um wie hier unter folgendem Link beschrieben die automatischen Trennstriche zu unterbinden.
Die sytle.css siehst so aus:
/* Theme Name: Twentytwelve Child Theme URI: http://einfachmeditieren.net Description: Child Theme from Twentytwelve Author: Markus Doern Author URI: https://einfachmeditieren.net Template: twentytwelve Version: 2.0 */ /* Hier beginnen meine eigenen CSS Regeln */ /* * sidebar widget area - hyphens none, Zeilenumbrüche */ /* Sidebar */ .widget-area .widget { -webkit-hyphens: none; -moz-hyphens: none; hyphens: none; margin-bottom: 48px; margin-bottom: 3.428571429rem; word-wrap: break-word; } * site content article - hyphens none, Zeilenumbrüche */ .site-content article { border-bottom: 4px double #ededed; margin-bottom: 72px; margin-bottom: 5.142857143rem; padding-bottom: 24px; padding-bottom: 1.714285714rem; word-wrap: break-word; -webkit-hyphens: none; -moz-hyphens: none; hyphens: none; }
In der Parent style.css sind die Hyphens Befehle auf „auto“, in der Child auf „none“. Es müssten dann doch die Änderungen aus dem Child Theme angenommen werden oder? Was mache ich hier falsch? In meinen Beiträgen erscheinen die Trennstriche nämlich nach wie vor:
-
Diese Antwort wurde geändert vor 7 Jahre von
akrele.
-
Diese Antwort wurde geändert vor 7 Jahre von
akrele.
-
Diese Antwort wurde geändert vor 7 Jahre von
Bego Mario Garde. Grund: Link korrigiert
Korrigier mal den Kommentar, dann müsste es klappen:
statt
* site content article - hyphens none, Zeilenumbrüche
bitte
/* site content article - hyphens none, Zeilenumbrüche
Hat geklappt, danke
-
Diese Antwort wurde geändert vor 7 Jahre von
- Das Thema „Twenty Twelve – Thema Aktualisierung“ ist für neue Antworten geschlossen.