web-dev-qa-db-fra.com

posts page - différentes longueurs d'extrait

est-il possible d’obtenir wordpress sur la page posts pour faire l’exemple suivant.

les trois premiers articles doivent avoir une grande image couvrant la largeur de la boîte de titre et un extrait plus long.

le reste des messages doit être plus fin et une image plus petite en vedette doit rester à gauche.

Comment pourrais-je changer cela dans le modèle ou la boucle?

3
James B

Tout d’abord, vous devez filtrer excerpt_length .

En supposant que vous souhaitiez que la longueur de votre extrait par défaut soit50 mots:

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

Cela fera tous extraits de 50 mots. Assurez-vous que cela fonctionne premier .

Ajoutez ensuite une condition appropriée pour utiliser une longueur d'extrait différente pour une page statique pour les publications. En supposant que vous utilisiez un modèle de page personnalisé,named template-posts.php, vous pourriez filtrer spécifiquement pour ce modèle de page, à l’aide de is_page_template() .

En supposant que vous souhaitiez que la page des publications utilise une longueur d'extrait de100 mots:

<?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' );
?>

En utilisant cette approche, vous pouvez conditionnellement renvoyer n'importe quel nombre de longueurs d'extraits en fonction de divers contextes.

3
Chip Bennett

Difficile sans avoir plus d’informations comme comment est ta boucle? Avez-vous deux boucles, une pour les 3 premiers postes et une seconde pour le reste? Avez-vous une boucle et attribuez-vous une balise différente avec un compteur? Sans avoir plus d'informations tout ce que je peux vous donner pour modifier l'extrait est le suivant:

Collez ceci sur votre fichier functions.php

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

Et puis utilisez cette <?php echo dp_clean($post->post_content, 250); ?>

changer 250 à une valeur pour répondre à vos besoins

0
user16562