Wie kann ich den Beitrag so verändern, dass ich nicht nur Titel und Text eingeben kann sondern auch ein Bild dazu?
Dazu muss dein Theme zunächst einmal Beitragsbilder unterstützen. Entweder ist dafür in der functions.php
bereits eine entsprechende Funktion add_theme_support( 'post-thumbnails' );
vorhanden oder du musst ein Child Theme erstellen und die Funktion hinzufügen.
Wenn du dann Seiten oder Beiträge bearbeitest, kannst du über das Pulldown-Menü „Ansicht anpassen“ festlegen, ob das Kästchen zum Hinzufügen von Beitragsbildern angezeigt wird. Hier kannst du dann festlegen, welches Bild als Beitragsbild angezeigt wird. Die Ausgabe erfolgt im Template mit the_post_thumbnail( 'medium' );
, wobei in der Klammer die Größe angegeben wird.
Die meisten Themes unterstützen bereits Beitragsbilder. Ich würde also erst einmal schauen, ob beim Bearbeiten von Beiträgen bereits ein Eingabefeld für Beitragsbilder vorhanden ist oder ggf. nur über „Ansicht anpassen“ ausgeblendet wurde.
Wie kann ich bestimmen wie viele Worte vom kompletten Content angeteasert werden?
Während im Template die Funktion the_content()
den gesamten Inhalt eines Beitrags oder einer Seite ausgibt, liefert the_excerpt()
entweder einen alternativen Text, der bei der Erstellung des Beitrags eingeggeben wurde, oder einen gekürzten Auszug des Beitrags ohne HTML-Formatierung.
Wie lang dieser Text ist, lässt sich mit einer Funktion in der functions.php
festlegen:
function wpdocs_custom_excerpt_length( $length ) {
return 20;
}
add_filter( 'excerpt_length', 'wpdocs_custom_excerpt_length', 999 );
(Quelle)
Alternative: Mit wp_html_excerpt( $post->post_content, '42' )
erhältst du einen auf 42 Zeichen gekürzten Auszug des Beitragsinhalt mit HTML-Formatierung.
Wie kann ich mir die ersten 3 Beiträge immer auf der Startseite ausgeben lassen wie oben beschrieben?
Dazu fügst du im Template frontpage.php
eine Funktion ein, z.B. <?php echo intro_beitraege(); ?>
, die du in der functions.php
definierst:
function intro_beitraege() {
$out = '';
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'date',
'ignore_sticky_posts' => true,
'posts_per_page' => 3,
);
$intro = new WP_Query( $args );
if ( $intro->have_posts() ) {
while ( $intro->have_posts() ) {
$intro->the_post();
$out .= get_the_post_thumbnail( 'medium' );
$out .= '<h3><a href="' . get_the_permalink() . '">' . get_the_title() . '</a></h3>';
$out .= '<p>' . get_the_excerpt() . '</p>';
}
};
wp_reset_postdata();
return $out;
}
Wenn du nur bestimmte Beiträge auf der Startseite zeigen möchtest, kannst du ihnen z.B. eine zusätzliche Kategorie „teaser“ zuweisen und diese noch als Abfrage-Attribut hinzufügen:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'date',
'ignore_sticky_posts' => true,
'posts_per_page' => 3,
'category_name' => 'teaser',
}