WordPress Post Object nutzen (HowTo)
Allgemeines
TBD
Vorangegangene(r) Prozess(e)
TBD via Link zu anderem HowTo
Arbeitsschritte (Initialer Prozess bei einfachen Templates)
Schritt 1: Template für Einzelansicht anlegen
- das Template wird zur Ausgabe von einzelnen Beiträgen benötigt
- die Einzel- bzw. Single-Ansicht wir im Root-Verzeichnis des Themes als single.php angelegt
- die single.php wird dann automatisch durch WordPress geladen
<?php defined( 'ABSPATH' ) or die(); ?>
<?php # HEADER ?>
<?php get_header(); ?>
<?php # TITLE ?>
<main>
<div class="">
<h1><?php the_title(); ?></h1>
</div>
<?php # CONTENT ?>
<div class="">
<div class=""></div>
<?php while ( have_posts() ) : the_post(); ?>
<div <?php echo post_class(); ?>>
<p>Erstellt von <?php echo get_the_author_meta( 'first_name' ); ?> <?php echo get_the_author_meta( 'last_name' ); ?> am <?php echo get_the_date($format = 'l, j. F Y'); ?></p>
<div><?php echo get_the_post_thumbnail(); ?></div>
<div><?php the_content(); ?></div>
</div>
<?php endwhile; ?>
</div>
<div class=""></div>
<div><a href="../">Alle Beiträge</a></div>
</main>
<?php # FOOTER ?>
<?php get_footer(); ?>
- ist die Ansicht um die Teaser (z. B. Titel und Bild) einzelner Beiträge anzuzeigen
- erfolgt nach bestimmten Regeln, da nicht alle angezeigt werden soll (z. B. die aktuellsten 3 Beiträge der Kategorie X)
- entgegen der Detail- und Listenansicht (single.php und home.php) steht hierfür kein definiertes Template zur Verfügung
- es muss das Post-Objekt bzw. die get_posts-Funktion (https://developer.wordpress.org/reference/functions/get_posts/) genutzt werden, um die Posts in einem Template oder Partial einzubinden
Beispiel: Daten der 3 Posts holen
<?php
$posts = get_posts([
'post_type' => 'post',
'post_status' => 'publish',
'numberposts' => 3,
'orderby' => 'date',
'order' => 'DESC',
]); ?>
Beispiel: 3 Post anzeigen
<?php foreach ($posts as $post): ?>
<a href="<?php echo get_permalink($post->ID); ?>" class="post-teaser">
<div class="img">
<div class="ratio-container-16-9" style="background-image: url(<?php echo get_the_post_thumbnail_url($post->ID, 'medium'); ?>);"></div>
</div>
<div class="content">
<span><?php echo the_author_meta( 'display_name' , $post->post_author ); ?></span>
<span><?php echo get_the_date('d.m.Y', $post->ID); ?></span>
<span><?php echo get_the_title($post->ID); ?></span>
<span><?php echo get_the_excerpt($post->ID); ?></span>
</div>
</a>
<?php endforeach; ?>
Schritt 3: Template für Listenansicht anlegen
- das Template wird zur Ausgabe einer Liste aller Beiträge genutzt
- sie wird nicht immer gewünscht bzw. benötigt
- die Listen- bzw. Archive-Ansicht wird im Root-Verzeichnis des Themes als home.php angelegt
- die home.php wird dann automatisch durch WordPress geladen
<?php # HEADER ?>
<?php get_header(); ?>
<?php # TITLE ?>
<main>
<div class="">
<h1>Alle Beiträge</h1>
</div>
<?php # CONTENT ?>
<div class="">
<div class="">
<?php while ( have_posts() ) : the_post(); ?>
<div <?php echo post_class(); ?>>
<div>
<?php echo get_the_post_thumbnail(); ?>
</div>
<div>
<h2>
<a href="<?php echo get_the_permalink(); ?>">
<?php the_title(); ?>
</a>
</h2>
<div class="">Erstellt am <?php echo get_the_date('d.m.Y'); ?></div>
<div><?php the_excerpt(); ?></div>
</div>
</div>
<?php endwhile; ?>
</div>
<div class="">
<?php echo previous_posts_link(); ?>
<?php echo next_posts_link(); ?>
</div>
</div>
</main>
<?php # FOOTER ?>
<?php get_footer(); ?>
Weitere Arbeitsschritte (Erweiterter Prozess bei komplexeren Templates)
Beiträge nach Kriterien anzeigen
Allgemein
- Anzeige erfolgt durch get_posts-Funktion und den darin festgelegten Kriterien
- z.B. Typ, Status
<?php
$posts = get_posts([
'post_type' => 'post',
'post_status' => 'publish',
]); ?>
nach Typ
Anzeige nach Typ ('post_type') kann sein:
- 'post_type' => 'post' (normale Beiträge)
- 'post_type' => 'page' (??? geht das?)
- 'post_type' => 'cpt-name' (Custom Post Type z. B: 'service')
- weitere ?
nach Status
https://wordpress.org/support/article/post-status/
Anzeige nach Status ('post_status') kann sein:
- 'post_status' => 'publish' (veröffentlichte Beiträge)
- '???' -> ???
nach Kategorie
Anzeige nach Kategorie ('category') kann sein:
- 'category' => 0 (zeigt Beiträge alle Kategorien)
- 'category' => 5 (zeigt Beiträge mit der ID der Kategorie -> siehe URL)
- 'category_name' => 'titelform' (zeigt Beiträge mit der Titelform der Kategorie -> siehe Kategorieverwaltung)
Beiträge sortieren
Sortierung erfolgt nach Kriterium, nach dem sortiert wird (orderby), und Sortierrichtung (order), nach der sortiert wird
<?php
$posts = get_posts([
'orderby' => 'date',
'order' => 'DESC',
]); ?>
- 'order' kann sein:
- 'ASC' -> aufsteigend
- 'DESC' -> absteigend
- 'orderby' kann sein:
- 'rand' -> Zufall
- 'date' -> Datum der Veröffentlichung
- 'title' -> ??? geht das?
Beitragsbildes auslesen und einbinden
Einfachste Varianten
mit als kompletter HTML-Tag mit Metainformationen oder nur die URL
<?php echo get_the_post_thumbnail(); ?> // Image-Tag with Meta (Width, Height, Source, Alt, Sizes...) <?php echo get_the_post_thumbnail_url(); ?> // Image-URL
Attribute des Beitragsbildes
<?php echo get_post_meta( get_post_thumbnail_id(), '_wp_attachment_image_alt', true ); ?> // Alt Text <?php echo get_post(get_post_thumbnail_id())->post_title; ?> // Title <?php echo get_post(get_post_thumbnail_id())->post_excerpt; ?> // Caption <?php echo get_post(get_post_thumbnail_id())->post_content; ?> // Description
Datum des Beitrags auslesen und einbinden
Einfachste Variante
<?php echo get_the_date(); ?>
Datumsformat anpassen
Datums- und Zeitformate siehe: https://www.php.net/manual/de/function.date.php
<?php echo get_the_date($format = 'l, j. F Y'); ?>
Weitere Informationen siehe: https://developer.wordpress.org/reference/functions/get_the_date/
Autor des Beitrags auslesen und einbinden
Einfachste Variante
<?php echo get_the_author_meta( 'first_name' ); ?> <?php echo get_the_author_meta( 'last_name' ); ?>
Einbindung weiterer Attribute des Post Autors
admin_color aim comment_shortcuts description display_name first_name ID jabber last_name nickname plugins_last_view plugins_per_page rich_editing syntax_highlighting user_activation_key user_description user_email user_firstname user_lastname user_level user_login user_nicename user_pass user_registered user_status user_url yim
Weitere Informationen siehe: https://developer.wordpress.org/reference/functions/get_the_author_meta/
Zusammenfassung des Beitrags auslesen und einbinden
Einfachste Variante
<?php the_excerpt(); ?>
Permalink des Beitrags auslesen und einbinden
Einfachste Variante
<?php echo get_the_permalink(); ?>
FAQ
Welche Attribute des Post Object können ausgelesen werden?
[ID] => [post_author] => [post_date] => [post_date_gmt] => [post_content] => [post_title] => [post_excerpt] => [post_status] => [comment_status] => [ping_status] => [post_password] => [post_name] => [to_ping] => [pinged] => [post_modified] => [post_modified_gmt] => [post_content_filtered] => [post_parent] => [guid] => [menu_order] => [post_type] => [post_mime_type] => [comment_count] => [filter] =>
Troubleshooting
Lösung 1
TBD
Nachfolgende(r) Prozess(e)
TBD via Verlinkung zu anderem(n) HowTo(s)
Quellen
- TBD