it-swarm.com.de

posts-Seite - verschiedene Längen des Ausschnitts

ist es möglich, WordPress auf der Posts-Seite zu bekommen, um das folgende Beispiel zu machen.

die ersten drei Beiträge müssen ein großes Bild haben, das sich über die Breite des Titelfelds erstreckt, und einen längeren Auszug.

der Rest der Posts muss dünner sein und ein kleineres Bild mit Features muss nach links verschoben werden.

Wie würde ich vorgehen, um dies in der Vorlage oder Schleife zu ändern?

3
James B

Zuerst müssen Sie excerpt_length filtern.

Angenommen, Sie möchten, dass Ihre Standardauszugslänge50 Wörterbeträgt:

<?php
function wpse53485_filter_excerpt_length( $length ) {
    return 50;
}
add_filter( 'excerpt_length', 'wpse53485_filter_excerpt_length' );
?>

Das ergibt all Auszüge aus 50 Wörtern. Stellen Sie sicher, dass first funktioniert.

Fügen Sie dann eine entsprechende Bedingung hinzu, um eine andere Auszugslänge für eine statische Seite für Posts zu verwenden. Angenommen, Sie verwenden eine benutzerdefinierte Seitenvorlage,mit dem Namen template-posts.php, dann können Sie mit is_page_template() speziell nach dieser Seitenvorlage filtern.

Angenommen, Sie möchten, dass die Seite für Posts eine Auszugslänge von100 Wörternverwendet:

<?php
function wpse53485_filter_excerpt_length( $length ) {
    if ( is_page_template( 'template-posts.php' ) ) {
        return 100;
    } else {
        return 50;
    }
}
add_filter( 'excerpt_length', 'wpse53485_filter_excerpt_length' );
?>

Mit diesem Ansatz können Sie eine beliebige Anzahl von Auszugslängen basierend auf verschiedenen Kontexten bedingt zurückgeben.

3
Chip Bennett

Schwer ohne mehr Infos wie ist deine Schleife? Hast du zwei Loops, einen für die ersten 3 Posts und einen zweiten für den Rest? Haben Sie eine Schleife und weisen Sie einem Zähler ein anderes Markup zu? Ohne weitere Informationen zu haben, kann ich Ihnen nur Folgendes geben, um den Auszug zu ändern:

Fügen Sie dies in Ihre functions.php-Datei ein

function dp_clean($excerpt, $substr=0) {
    $string = strip_tags(str_replace('[...]', '...', $excerpt));
    if ($substr>0) {
        $string = substr($string, 0, $substr);
    }
    return $string;
}

Und dann benutze diese <?php echo dp_clean($post->post_content, 250); ?>

ändern Sie 250 in einen Wert, der Ihren Anforderungen entspricht

0
user16562