Seitenelemente wiederverwenden – get_template_part()

Einer der wichtigsten Funktionen bei der Themaerstellung ist „get_template_part()„. Damit kann man sich wiederholenden Code in einer externen .php Datei erstellen und diesen mit Hilfe der Funktion in die verschiedenen Templates einbinden.

Jede Seite unseres Themas enthalt die Navigation auf der linken Seite:

Darum erstellen wir eine neue Datei im „template-parts“ Order des Themas: „content-navigation.php“. Diese Datei enthält den Code der Navigation:

<nav id="sidebar">
	
	<div id="sidebar-body">
	<!-- custom navmenu -->
		<?php
			wp_nav_menu(
				array(
					'container_class' => 'meinContainer',
					'menu_class'      => 'list-unstyled components',
					'theme_location' => 'menu-1',
					'walker'         => new usSidebarNavwalker(),
				)
			);
		?>
	</div>
</nav>

Im z.B.: page.php template kann man nun die Navigation an geeigneter Stelle folgendermaßen aufrufen:

<!-- Sidebar -->

<?php get_template_part( 'template-parts/content', 'navigation' ); ?>

Die Funktion „get_template_part()“ kann zwei Parameter aufnehmen. Der erste Parameter gibt den Pfad zu den template parts an. Der zweite Parameter gibt die Zieldatei, hier content-navigation.php, an.

Wenn andere template Dateien auch die Navigation nutzen wollen, kann dort einfach die „get_template_part()“ PHP Funktion aufgerufen werden. Ein weiterer Vorteil ist, dass man Code in den einzelnen Parts ändern kann und diese Änderung dann überall übernommen werden.

Zum Beispiel sieht die page.php Datei nun folgendermaßen aus:


<!-- header -->
<?php get_header('simple'); ?> <!-- <div class="wrapper" -->

<!-- header nav --> 
<?php get_template_part( 'template-parts/content', 'header-nav' ); ?>

<!-- Sidebar -->
<?php get_template_part( 'template-parts/content', 'navigation' ); ?>

<!-- Page Content -->
<div id="content">
	<div id="overlay"> </div>
	
	<span id="postID"> 
		<?php echo getPageCode(get_post()->ID);	?>
	</span>
	
	<div class="breadcrumb">
		<?php echo get_breadcrumb(get_post()->ID); ?>
	</div>

	<main id="primary" class="site-main">
		<?php
			while ( have_posts() ) :
			the_post();
				
			get_template_part( 'template-parts/content', 'page' );

			// If comments are open or we have at least one comment, load up the comment template.
			if ( comments_open() || get_comments_number() ) :
			comments_template();
			endif;

			endwhile; // End of the loop.
		?>

	</main><!-- #main -->

	<!-- page navigation footer -->
	<?php get_template_part( 'template-parts/content', 'navigation-footer' ); ?>

</div> <!-- content -->

<?php get_footer('simple'); ?>

Links