Wordpress - Child Themes: Unterschied zwischen den Versionen
| (2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
== Links == | == Links == | ||
| − | https://codex.wordpress.org/Child_Themes | + | https://codex.wordpress.org/Child_Themes |
| + | https://die-netzialisten.de/wordpress/stylesheets-mit-enqueue_script-einbinden/ | ||
== Bessere Anleitung == | == Bessere Anleitung == | ||
| Zeile 47: | Zeile 48: | ||
===Hinweise=== | ===Hinweise=== | ||
| − | Bei manchen Themes, die mit mehreren CSS-Dateien arbeiten, kann es nämlich nötig sein, zuvor die CSS-Dateien des Eltern-Themes zu deregistrieren und noch einmal neu zu registrieren. So stellt man sicher, dass die Reihenfolge stimmt, in der die Styles geladen werden – Eltern-Theme zuerst, erst danach die vom Childtheme. | + | ==== Reihenfolge garantieren ==== |
| − | In der oben gezeigten Funktion wird zuerst das CSS des Eltern-Themes geladen. Das erreicht man dadurch, dass man dem Child-CSS eine dependency (Abhängigkeit) zuweist, nämlich das Parent-CSS. Im Codebeispiel ist das der Teil, der in dem array steht: | + | Bei manchen Themes, die mit mehreren CSS-Dateien arbeiten, kann es nämlich '''nötig sein, zuvor die CSS-Dateien des Eltern-Themes zu deregistrieren und noch einmal neu zu registrieren'''. So stellt man sicher, dass die Reihenfolge stimmt, in der die Styles geladen werden – Eltern-Theme zuerst, erst danach die vom Childtheme. |
| + | |||
| + | In der oben gezeigten Funktion wird zuerst das CSS des Eltern-Themes geladen. '''Das erreicht man dadurch, dass man dem Child-CSS eine dependency (Abhängigkeit) zuweist, nämlich das Parent-CSS'''. Im Codebeispiel ist das der Teil, der in dem array steht: | ||
| + | |||
| + | array('twentyfifteen-style') | ||
| + | |||
| + | Was genau in dem array stehen muss, ist natürlich '''von Theme zu Theme verschieden'''en. Bei Twentyfifteen heisst der handle, mit dem die Styles eingebunden werden, ‚twentyfifteen-style‘. '''Zu finden ist diese Information in der functions.php''' von Twentyfifteen in Zeile 209. | ||
| + | |||
| + | ==== Caching Probleme umgehen ==== | ||
| + | <pre> | ||
| + | wp_enqueue_style( 'scheme-custom', | ||
| + | get_stylesheet_directory_uri() . '/css/scheme-custom.css', | ||
| + | $deps, | ||
| + | wp_get_theme()->get('Version') // Bust Cache to ensure loading | ||
| + | ); | ||
| + | </pre> | ||
| − | |||
| − | |||
== Minimales Child Theme == | == Minimales Child Theme == | ||
| Zeile 110: | Zeile 124: | ||
Mit phpmyadmin einfach die Optionen aus dem Elterntheme Eintrag kopieren und in das Child Theme eintragen. | Mit phpmyadmin einfach die Optionen aus dem Elterntheme Eintrag kopieren und in das Child Theme eintragen. | ||
| + | |||
| + | == Beispiele / Tipps und Tricks == | ||
| + | wp_enqueue_style( 'child-style', | ||
| + | get_stylesheet_directory_uri() . '/style.css', | ||
| + | array( $parent_style ), | ||
| + | wp_get_theme()-&gt;get('Version') | ||
| + | ); | ||
Aktuelle Version vom 10. Mai 2019, 13:24 Uhr
Links[Bearbeiten]
https://codex.wordpress.org/Child_Themes https://die-netzialisten.de/wordpress/stylesheets-mit-enqueue_script-einbinden/
Bessere Anleitung[Bearbeiten]
Quelle: https://die-netzialisten.de/wordpress/anleitung-childtheme-anlegen-update/ (2017-03)
Zusammenfassung[Bearbeiten]
Zusammenfassung Um ein Childtheme anzulegen, sind folgende Schritte notwendig:
- Ein neues Verzeichnis für das Childtheme anlegen und benennen (Name frei wählbar).
- Das Verzeichnis muss auf derselben Ebene liegen wie das Verzeichnis des Elternthemes.
- Im Childtheme-Verzeichnis eine leere Datei anlegen und diese Datei style.css nennen.
- In die style.css die Zeilen für den CSS-Header (siehe Beispiel für eine Childtheme CSS-Datei) einfügen. Dabei darauf achten, dass hinter „Template“ exakt der Name (slug) des Verzeichnisses des Elternthemes steht.
- Eine leere Datei anlegen und diese functions.php nennen.
- Im Childtheme die Datei functions.php anlegen und dort den Code eintragen, der für die Einbindung/Verknüpfung der CSS-Dateien aus Eltern- und Childtheme sorgt (siehe
Das CSS des Elternthemes mit dem Childtheme verknüpfen).
- Jetzt ist das Childtheme einsatzfähig und im Backend auswählbar.
- Wer Lust hat, legt noch einen Screenshot (screenshot.png) ins Childtheme-Verzeichnis. Dann sieht es im Backend in der Themeauswahl hübscher aus.
themes Ordner:
Beispiel[Bearbeiten]
style.css
/* Theme Name: Das neue Childtheme Description: Ein schönes Childtheme Author: Kirsten Schelper Author URI: http://www.schelperdesign.net Template: Name_des_Parent-Theme-Ordners Version: 1.0 Tags: */
functions.php In dieser Datei binden wir das Stylesheet der Childthemes ein und zwar so, dass es nach der style.css des Parent-Themes geladen wird. Wäre die Reihenfolge anders herum, würden wir unsere Änderungen im Childtheme nicht sehen, weil das CSS vom Childtheme vom Parent-Theme überschrieben würde.
function twentyfifteen_child_styles() {
wp_deregister_style( 'twentyfifteen-style');
wp_register_style('twentyfifteen-style', get_template_directory_uri(). '/style.css');
wp_enqueue_style('twentyfifteen-style', get_template_directory_uri(). '/style.css');
wp_enqueue_style( 'childtheme-style', get_stylesheet_directory_uri().'/style.css', array('twentyfifteen-style') );
}
add_action( 'wp_enqueue_scripts', 'twentyfifteen_child_styles' );
Hinweise[Bearbeiten]
Reihenfolge garantieren[Bearbeiten]
Bei manchen Themes, die mit mehreren CSS-Dateien arbeiten, kann es nämlich nötig sein, zuvor die CSS-Dateien des Eltern-Themes zu deregistrieren und noch einmal neu zu registrieren. So stellt man sicher, dass die Reihenfolge stimmt, in der die Styles geladen werden – Eltern-Theme zuerst, erst danach die vom Childtheme.
In der oben gezeigten Funktion wird zuerst das CSS des Eltern-Themes geladen. Das erreicht man dadurch, dass man dem Child-CSS eine dependency (Abhängigkeit) zuweist, nämlich das Parent-CSS. Im Codebeispiel ist das der Teil, der in dem array steht:
array('twentyfifteen-style')
Was genau in dem array stehen muss, ist natürlich von Theme zu Theme verschiedenen. Bei Twentyfifteen heisst der handle, mit dem die Styles eingebunden werden, ‚twentyfifteen-style‘. Zu finden ist diese Information in der functions.php von Twentyfifteen in Zeile 209.
Caching Probleme umgehen[Bearbeiten]
wp_enqueue_style( 'scheme-custom',
get_stylesheet_directory_uri() . '/css/scheme-custom.css',
$deps,
wp_get_theme()->get('Version') // Bust Cache to ensure loading
);
Minimales Child Theme[Bearbeiten]
- Ordner mit Template Name erstellen (recommended: meinTemplateName-child)
- Mindestens style.css und functions.php anlegen
- Header für style.css
/* Theme Name: Twenty Fifteen Child Theme URI: http://example.com/twenty-fifteen-child/ Description: Twenty Fifteen Child Theme Author: John Doe Author URI: http://example.com Template: name_of_parent_template_folder Version: 1.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready Text Domain: twenty-fifteen-child */
- Enqeue Parent and Child Theme Styles
functions.php
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_uri(), array( 'parent-style' ) );
}
Styles im Stylesheet einbinden[Bearbeiten]
Einfache Möglichkeit wenn das Parent Stylesheet nur eine style.css Datei benutzt:
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
}
Bei mehreren Stylesheets im Eltern Theme:
add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );
function theme_enqueue_styles() {
wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array('parent-style')
);
}
Optionen aus Parent Theme nachträglich übertragen[Bearbeiten]
Wenn schon Einstellungen in den Optionen des Elternthemes gemacht wurden, kann man diese relativ einfach übertragen. Die Optionen werden in der Datenbank in der Tabelle wp_options gespeichert. Jedes Theme bekommt einen Eintrag der mit theme_mods_ beginnt und mit dem Namen des Themes aufhört. So findest du den Eintrag.
SELECT * FROM `wp_options` WHERE option_name = "theme_mods_themename"
Mit phpmyadmin einfach die Optionen aus dem Elterntheme Eintrag kopieren und in das Child Theme eintragen.
Beispiele / Tipps und Tricks[Bearbeiten]
wp_enqueue_style( 'child-style',
get_stylesheet_directory_uri() . '/style.css',
array( $parent_style ),
wp_get_theme()->get('Version')
);