Einleitungstext über Beitragsseite


Frage: Ich möchte gerne auf meiner Startseite über den Beiträgen einen Einleitungstext haben, den ich bei Bedarf abändern kann. Wie macht man das?

Dazu würde ich einen benutzerdefinierten Inhaltstyp (Custom Post Type) „Startseite“ erstellen und diesen mit get_posts() abrufen. Alternativ bietet sich auch eine Theme-Option an, in der der Einführungstext abgelegt wird. Nachteilig ist dabei aber die fehlende visuelle Eingabe und es gibt auch keinen eigenen Menüeintrag, was die Sache auch unübersichtlicher macht.

Das Theme Twenty Thirteen verwendet kein eigenes Template für die Startseite. Auf Grund der Template-Hierarchy fällt WordPress für eine Startseite, die Beiträge anzeigt, auf die index.php zurück, die du in einem Child Theme ergänzen musst.

Wie ein Child Theme erstellt wird, hat Ellen sehr schön beschrieben, da möchte ich hier nicht im Detail drauf eingehen. In deinem Child Theme müsstest du eine Kopie der index.php des Parent-Theme anlegen und wie folgt ändern:

get_header(); ?>

	<div id="primary" class="content-area">
		<div id="content" class="site-content" role="main">

/* Hier wird der Text für die Eingangsseite abgerufen */
<?php
  	$args = array(
		 'posts_per_page'  => 1,
		 'orderby'         => 'date',
		 'order'           => 'DESC',
		 'post_type'       => 'startseite',
		 'post_status'     => 'publish'
		);
		$intro_array = get_posts( $args );

		if( $intro_array ) {
		foreach ( $intro_array as $post ) : setup_postdata( $post );?>
			<article <?php post_class('intro'); ?> >
				<header class="entry-header">
				<h1 class="entry-title"><?php the_title(); ?></h1>
			  <?php	the_content(); ?>
			</header>
			</article>

<?php endforeach;
wp_reset_postdata();
}?>

/* ab hier wieder alles wie gehabt */
		<?php if ( have_posts() ) : ?>

			<?php /* The loop */ ?>

Den benutzerdefinierten Inhaltstyp kannst du entweder mit einem Plugin erstellen oder du kopierst diesen Code in die functions.php des Child Themes:

// Custom Post Type für Startseite
function custom_post_type() {

	$labels = array(
		'name'                  => 'Einführungen Startseite',
		'singular_name'         => 'Einführung Startseite',
		'menu_name'             => 'Startseite',
		'name_admin_bar'        => 'Startseite',
		'all_items'             => 'Alle Einleitungen',
		'add_new_item'          => 'Neue Einleitung hinzufügen',
		'add_new'               => 'Hinzufügen',
		'new_item'              => 'Neue Einleitung',
		'edit_item'             => 'Einleitung bearbeiten',
		'update_item'           => 'Einleitung aktualisieren',
		'view_item'             => 'Einleitung ansehen',
		'search_items'          => 'Einleitung suchen',
		'not_found'             => 'Nicht gefunden',
		'not_found_in_trash'    => 'Nicht im Papierkorb gefunden',
		'featured_image'        => 'Einleitungs-Bild',
		'set_featured_image'    => 'Einleitungs-Bild festlegen',
		'remove_featured_image' => 'Einleiutungs-Bild entfernen',
		'use_featured_image'    => 'Als Einleitungsbild verwenden',
		'insert_into_item'      => 'In Einleitung einfügen',
		'uploaded_to_this_item' => 'In Einleitung hochgeladen',
		'items_list'            => 'Liste der Einleitungen',
		'items_list_navigation' => 'Navigation Einleitungsliste',
		'filter_items_list'     => 'Einleitungsliste filtern',
	);
	$args = array(
		'label'                 => 'Einführung Startseite',
		'description'           => 'Inhalt für eine Einführung auf der Startseite',
		'labels'                => $labels,
		'supports'              => array( 'title', 'editor', 'thumbnail', 'revisions', ),
		'taxonomies'            => array( 'category', 'post_tag' ),
		'hierarchical'          => false,
		'public'                => true,
		'show_ui'               => true,
		'show_in_menu'          => true,
		'menu_position'         => 20,
		'menu_icon'             => 'dashicons-admin-home',
		'show_in_admin_bar'     => false,
		'show_in_nav_menus'     => true,
		'can_export'            => true,
		'has_archive'           => false,
		'exclude_from_search'   => false,
		'publicly_queryable'    => true,
		'capability_type'       => 'page',
	);
	register_post_type( 'startseite', $args );

}
add_action( 'init', 'custom_post_type', 0 );