Die index.php ist die wichtigste Template-Datei eines WordPress Themes. Sie stellt für einen Internet-Browser, ähnlich wie die index.html bei einer statischen Website den Startpunkt für eine auf WordPress basierende Website dar.Ohne sie würde das Theme nicht funktionieren. Prinzipiell könnte man auch ein WordPress Theme erstellen, das nur aus einer index.php und einer style.css und aus keiner weiteren Template-Datei, wie z. B. der footer.php, header.php und archive.php, besteht.
Wie ist eine index.php aufgebaut?
Der Aufbau einer index.php richtet sich nach der Komplexität eines Themes. Dabei ist sie meistens sehr einfach und übersichtlich aufgebaut, wenn das Theme komplexer ist, da sich ein Großteil des Codes in anderen Templates ausgelagert ist, und sich in der index.php lediglich das Grundgerüst des Themes befindet.Ist das Theme hingegen einfach aufgebaut, enthält die index.php meist einen Großteil des im gesamten Theme verwendeten Codes, wie z. B. die Dokumenttyp-Deklaration, das HTML-Wurzelelement, den Header, die Navigation, den Hauptinhalt, die Sidebar und den Footer.Die index.php des aktuellen WordPress Standard-Themes Twenty Fifteen sieht z. B. wie folgt aus:<?php/*** The main template file** This is the most generic template file in a WordPress theme* and one of the two required files for a theme (the other being style.css).* It is used to display a page when nothing more specific matches a query.* e.g., it puts together the home page when no home.php file exists.** Learn more: {@link https://codex.wordpress.org/Template_Hierarchy}** @package WordPress* @subpackage Twenty_Fifteen* @since Twenty Fifteen 1.0*/get_header(); ?><div id="primary" class="content-area"><main id="main" class="site-main" role="main"><?php if ( have_posts() ) : ?><?php if ( is_home() && ! is_front_page() ) : ?><header><h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1></header><?php endif; ?><?php// Start the loop.while ( have_posts() ) : the_post();/** Include the Post-Format-specific template for the content.* If you want to override this in a child theme, then include a file* called content-___.php (where ___ is the Post Format name) and that will be used instead.*/get_template_part( 'content', get_post_format() );// End the loop.endwhile;// Previous/next page navigation.the_posts_pagination( array('prev_text' => __( 'Previous page', 'twentyfifteen' ),'next_text' => __( 'Next page', 'twentyfifteen' ),'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyfifteen' ) . ' </span>',) );// If no content, include the "No posts found" template.else :get_template_part( 'content', 'none' );endif;?></main><!-- .site-main --></div><!-- .content-area --><?php get_footer(); ?>
Wie man hier an den Zeilen <?php get_footer(); ?> und get_header(); ?> sind bei dieser index.php der Header und Footer in zwei weitere Template-Dateien ausgelagert.