Support » Themes » WordPress-Child-Theme |PHP-Dateien

  • Gelöst Anonymous User 16085431

    (@anonymized-16085431)


    Hallo und guten Tag,

    wenn ich ein paar kleinere Änderungen in einer PHP-Datei (Folter vornehmen möchte, benötige ich da ein WordPress-Child-Theme? Wenn das Theme upgedatet wird, wären doch alle meine Änderungen weg oder?

    Viele Grüße

    Marc

    PS: Gibt es da vielleicht ein Plug-in?

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Moderator Bego Mario Garde

    (@pixolin)

    Ein Child Theme macht vor allem dann Sinn, wenn du eine andere Ausgabe deiner Seiten und Beiträge haben möchtest, die nicht alleine durch eine Anpassung des CSS durch eine zusätzliche CSS-Regel (Design > Customizer > Zusätzliches CSS) möglich ist.

    In Tutorials wird häufig empfohlen, zusätzliche PHP-Funktionen in der functions.php des Themes einzufügen. Das hält natürlich nur bis zum nächsten Theme-Update, bei dem auch die functions.php wieder überschrieben wird. Dafür alleine aber ein Child-Theme anzulegen, ist ein wenig zu viel des Guten (und mit mehr Aufwand bei der regelmäßigen Wartung der Website verbunden!).

    Eine schöne Alternative bietet das Plugin Code Snippets, mit dem du PHP-Funktionen einfügen und wahlweise für Front- und/oder Backend aktivieren kannst. Das Plugin erkennt sogar, wenn eine fehlerhafte Funktion deine WordPress-Installation abstürzen lässt und bietet dir eine Möglichkeit zur Korrektur ohne aufwändiges Löschen und Wiederherstellen von Dateien per FTP.

    Bestimmte Funktionen gehören auch nicht in ein Theme, weil durch einen Theme-Wechsel dann auch die Funktion deaktiviert würde – z.B. Custom Post Types, Custom Fields oder eine Custom Taxonomy. Sofern du hierfür nicht wieder ein eigenes Plugin (z.B. Custom Post Type UI) verwendest, ist es durchaus sinnvoll, die PHP-Funktion in ein eigenes Plugin zu stecken.

    Dazu rasch ein kleines Beispiel*: Nehmen wir an, du möchtest im <head>-Bereich deiner Webseiten eine Kommentarzeile <!-- made with love by marcmarx --> hinzufügen. Um dafür ein eigenes Plugin zu erstellen, legst du in einem Programmiereditor (z.B. Atom Editor) eine neue php-Datei an und schreibst als erstes einen Kommentar mit ein paar Angaben zum Plugin:

    <?php
    /*
    Plugin Name:  Marc Marx Header
    Description:  Fügt Zeile im Webseiten-Header ein
    Version:      1.0.0
    Author:       Marc Marx
    License:      GPL2
    License URI:  https://www.gnu.org/licenses/gpl-2.0.html
    */
    

    (mehr Informationen zum Header findest du im Plugin Developer Handbook)

    Als nächstes fügst du eine Zeile hinzu, die dafür sorgt, dass dein Plugin nur von WordPress verwendet und nicht von einem Nutzer direkt aufgerufen werden kann:
    defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

    Jetzt kommt die eigentliche Funktion:

    add_action( 'wp_head', 'marcmarx_was_here' );
    if( ! function_exists( marcmarx_was_here ) {
      function marcmarx_was_here() {
        echo '<!-- made with love by marcmarx -->';
      }
    }

    Das sieht dann zusammen so aus:

    <?php
    /*
    Plugin Name:  Marc Marx Header
    Description:  Fügt Zeile im Webseiten-Header ein
    Version:      1.0.0
    Author:       Marc Marx
    License:      GPL2
    License URI:  https://www.gnu.org/licenses/gpl-2.0.html
    */
    
    defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
    
    add_action( 'wp_head', 'marcmarx_was_here' );
    if( ! function_exists( marcmarx_was_here ) {
      function marcmarx_was_here() {
        echo '<!-- made with love by marcmarx -->';
      }
    }

    Die fertige Datei kannst du als marcmarxheader.php speichern, in ein Verzeichnis marcmarxheader packen, das Verzeichnis als zip-Datei komprimieren und dann dein fertiges Plugin auch schon installieren.

    (* Vielleicht habe ich dich jetzt mit dem Beispiel auch furchtbar gelangweilt, weil du dich bestens mit Plugins auskennst – in dem Fall: sorry! – aber gelegentlich soll ja noch jemand anders mitlesen und vielleicht haben wir dann dem-/derjenigen mit dem Beispiel einen Gefallen getan.)

    Viel Erfolg.

    Moderator Marcus Spanier

    (@espiat)

    Um welche Änderungen geht es konkret?

    Z.B. Designänderungen sind auch updatesicher über den Customizr (CSS) möglich.

    Thread-Starter Anonymous User 16085431

    (@anonymized-16085431)

    Hallo Bego,

    was für ein Feedback. WOW!!! Dafür danke ich Dir ganz herzlich.

    Zu meiner Frage: Ich möchte das Theme Twenty Fifteen so ändern, dass zum einen andere Schriften angezeigt werden und ein anderer Text im Footer und bei der 404-Seite anhgezeigt wird.

    Die Schriften habe ich mit dem Custumizer geändert. Die PHP-Files habe ich mit dem Editor geändert. Nur werden die PHP-Files beim nächsten Update überschriben. Hier geht es mir nur um den Austausch des Links von WordPress und einer geänderten Form der 404-Seite. Das sind weniger als zwei Zeilen Code. Benötige ich da überhaupt ein ChildTheme?

    LG

    Marc

    Moderator Bego Mario Garde

    (@pixolin)

    Zu meiner Frage: Ich möchte das Theme Twenty Fifteen so ändern, dass zum einen andere Schriften angezeigt werden und ein anderer Text im Footer und bei der 404-Seite anhgezeigt wird.

    Dazu solltest du zunächst einmal die eingebundenen Schriften wieder entfernen, in dem du in der functions.php deines Child Themes folgendes hinzufügst:

    add_action( 'wp_print_styles', 'disable_fonts', 100 );
    function disable_fonts() {
    	wp_dequeue_style( 'twentyfifteen-fonts' );
    }

    Danach kannst du (sofern du nicht die Standard-Schriften Arial, Times News Roman und Courier New verwenden möchtest) eigene Schriften einbinden, wobei es nach meinen Informationen zur DS-GVO wohl besser ist, wenn du die Schriften selber hostest. Eine Anleitung findest du z.B. bei den Netzialisten.

    Die PHP-Files habe ich mit dem Editor geändert.
    Der Editor ist zwar inzwischen sicherer, aber ich mag es aus verschiedenen Gründen lieber, mit einem richtigen Programmier-Editor wie Sublime Text oder Atom Editor in einer lokalen Entwicklungsumgebung zu arbeiten und dann das fertige Template hochzuladen.

    Manche Themes bieten sehr viele Hooks, über die Entwickler zusätzlichen Code einbinden oder Änderungen vornehmen können. Falls kein Hook vorhanden ist oder vorhandene Hooks für deine Änderung nicht ausreichen, kommst du um ein eigenes Template nicht herum – und dann brauchst du auch ein Child Theme.

    Lies dazu auch mal den interessanten Beitrag von @zodiac1978 zum Child Theme Dillema. (Torstens Hinweis zu älteren Beiträgen kannst du in diesem Fall ruhig überspringen. Das Thema ist weiterhin aktuell.)

    Thread-Starter Anonymous User 16085431

    (@anonymized-16085431)

    Halo Bego,

    vielen Dank für Dein Feedback. Ich habe mich mit dem Thema lange beschäftigt und frage mich gerade, ob es überhaupt Sinn macht ein Child Theme zu erstellen. Im Grunde möchte ich ja nur folgendes ändern:

    1. Schriften:
    Das mache ich ja der dem Customizer und jetzt dank Dir mit der PHP-Codezeile.

    2. 404-seite:
    Das mache ich im eingebauten Editor. Da möchte ich nur ein SIE aus dem DU machen.

    3. Die Footerzeile ändern.

    Nachdem ich mir das Video von Torsten Landsiedel.de angeschaut habe, wäre das ja wie mit Kanonen auf Spatzen geschossen.

    Was meinst Du?

    LG

    Marc

    Moderator Bego Mario Garde

    (@pixolin)

    2. 404-seite:
    Das mache ich im eingebauten Editor. Da möchte ich nur ein SIE aus dem DU machen.

    Der eingebaute Editor ist dafür nicht optimal.
    Wieso, hatte ich bereits beschrieben.

    Die Änderung wird beim nächsten Update des Themes überschrieben. Für Änderungen an Templates sind Child Themes besser.

    Wenn die Website aber generell ein formelles „Sie“ verwenden soll, wäre es besser, wenn du das als Sprache in WordPress festlegst. Du kannst dann immer noch im Benutzerprofil angeben, dass das Backend informelles Deutsch („Du“) verwenden soll. Dann kommst du auch ohne Child Theme aus (weniger Wartung!) , hast dann allerdings mehr Sprachdateien, was bei Updates einfach etwas längere Ladezeiten zur Folge hat.

    3. Die Footerzeile ändern.

    Schau dir den Footer doch nochmal an:

    <footer id="colophon" class="site-footer" role="contentinfo">
      <div class="site-info">
        <?php
        /**
        * Fires before the Twenty Fifteen footer text for footer customization.
        *
        * @since Twenty Fifteen 1.0
        */
        do_action( 'twentyfifteen_credits' );
        ?>
      <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyfifteen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentyfifteen' ), 'WordPress' ); ?></a>
      </div><!-- .site-info -->
    </footer><!-- .site-footer -->

    Der Hook twentyfifteen_credits wird also vor der Zeile „Stolz präsentiert von WordPress“ ausgeführt. Wenn du eine Copyright-Zeile einfügen möchtest, kannst du das mit

    add_action( 'twentyfifteen_credits', 'marcmarx_copyright' );
    function marcmarkx_copyright() {
      echo '&copy; Marc Marx, 2018';
    }

    erledigen. Den Link zu WordPress kannst du mit der CSS-Regel .site-info a { display:none; } bequem ausblenden, alles ohne Child Theme.

    Thread-Starter Anonymous User 16085431

    (@anonymized-16085431)

    Hallo Bego,

    dankeschön 🙂 Das mit der 404-Seite hat geklappt. Hätte ich ja auch selbst draufkommen können 🙂 Peinlich …

    Also eon Child-Theme möchte ich nun nicht mehr nutzen. Da wäre der Aufwand zu groß. Zwei Fragen habe ich noch um Schluss:

    1. Gibt es ein Plugin. wonach ich PHP eingeben kann ohne mit einem Editor zu arbeiten?

    2. Wenn ich im Customizr CSS eingebe, geht es dann bei einem Update verloren?

    LG und 1.000 Dank

    Marc

    Moderator Bego Mario Garde

    (@pixolin)

    Gibt es ein Plugin. wonach ich PHP eingeben kann ohne mit einem Editor zu arbeiten?

    Hast du meine erste Antwort eigentlich gelesen? 🙂
    Tipp: Code Snippets

    Wenn ich im Customizr CSS eingebe, geht es dann bei einem Update verloren?

    Zusätzliche CSS-Regeln, die du im Customizer eingibst, sind wie Theme-Einstellungen und werden nicht bei Theme-Updates überschrieben, „verschwinden“ aber bei einem späteren Wechsel des Themes (und „tauchen wieder auf“, wenn du zum vorherigen Theme zurück wechselst).

    Thread-Starter Anonymous User 16085431

    (@anonymized-16085431)

    Hallo Bego,

    ich habe die erste Antwort gelesen aber das mit Code Snippets überlesen 😀

    so, ich habe jetzt alles so wie ich es möchte. Es funktioniert alles perfekt. CSS-Anpassunen erledige ich mit dem Customizer und PHP mit dem Plugin Code Snippets. ein Child-Theme benötige ich nun nicht mehr.

    Ich bedanke mich ganz herzlich bei Dir Bego! Vielen Dank auch an espiat.

    Viele Grüße und einen guten Start in die Woche

    Marc

Ansicht von 9 Antworten - 1 bis 9 (von insgesamt 9)
  • Das Thema „WordPress-Child-Theme |PHP-Dateien“ ist für neue Antworten geschlossen.