WP Entwickler: Alles was ich für ein neues Custom Theme benötige

Immer wenn ich eine neue WordPress Website erstelle, fange ich immer von Grund auf und verwende kein Template oder Vorlagen bzw. so genannte Boilerplate-Codes. Das hat den Grund das nicht jede Website alle WordPress Funktionen benötigt und spart am Ende auch an unnötiger Ladezeit. Dadurch bin ich mit der offiziellen Code-Dokumentation sehr gut vertraut und habe auch vieles im Kopf bzw. weiß ganz genau wonach ich suche und wo ich es finde. Um mir jedoch das nachschlagen doch nun zu ersparen, schreibe ich und erweitere ich diesen Artikel und gegen falls bringt es noch jemanden etwas.

Das Minimum

Damit ein neues Theme von WordPress erkannt wird, wird mindesten eine index.php und style.css Datei benötigt.

style.css

Es wird lediglich ein Header / Kommentarkopf erwartet mit paar Information und liegt im Root Verzeichnis des Themes. Ob man die Datei auch mit CSS Klassen oder eine zusätzliche füllt ist einem selbst überlassen.

/*
Theme Name: Mein Theme Name
Author: Karolis Dailidonis
Author URI: https://karolisdailidonis.de/
Version: 0.1
Requires at least: 5.0
Requires PHP: 8.0
*/

index.php

Die Startseite wird klassisch über die index.php Datei gerendert und man hat auch die Freiheit daraus eine OnePage zu machen und alles in diese Datei zu schmeißen, also <head>, <body>, <footer> etc.

Methoden/Snippets die ich oft benötige:

<?php get_header() ?>

<?php get_footer() ?>

header.php

Methoden/Snippets die ich oft benötige:

<title> <?php echo get_bloginfo('name') ?> </title>

<?php wp_head() ?>

<?php echo get_template_directory_uri() ?>

footer.php

<?php wp_footer() ?>

page.php / single.php

Spätesten wenn man dabei ist eine Impressum oder Datenschutz Seite einzurichten, wird auch eine page.php Datei benötig. Beiträge werden über die single.php Seite gerendert und ist 1:1 identisch. Um den Inhalt Darzustellen wird sogenannter „The Loop“ benötigt.

<?php

if (have_posts()) {
    while (have_posts()) {
        the_post();
?>

    <article>
        <h1><?php echo the_title(); ?></h1>
        <?php echo the_content(); ?>
    </article>

<?php

    } // end while
} // end if


?>

functions.php

// functions.phpp

<?php

// Zwei Navigationen die sich dann über WP Admin verwalten lassen 
function register_theme_navs()
{
    register_nav_menus(
        array(
            'header-menu' => __('Header Menu'),
            'footer-menu' => __('Footer Menu')
        )
    );
}
add_action('init', 'register_theme_navs');

?>

Interessante Links

Um etwas tiefer in die Materie zu gehen hier die wichtigsten Links die ich nutze, überwiegenden WordPress als Quelle <3

Weitere Projekte