Je ne parviens pas à personnaliser la page de couverture/la page de destination pour mon thème personnalisé. J'ai conçu un thème personnalisé et je l'ai codé à l'aide du Underscore .
Si je comprends bien, le codex suggère de créer un fichier page-avant.php et de le personnaliser à cet endroit. Dans , réglage> lecture , j'ai sélectionné Une page statique/Première page (la page souhaitée où je change de message d'accueil statique). En dessous, je veux avoir 3 à 5 articles récents avec des vignettes (activées dans mes fonctions) et des extraits.
Mon page d'accueil.php:
<main id="main" class="site-main" role="main">
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'page' ); ?>
<?php endwhile; // end of the loop. ?>
<h2>Recent Posts</h2>
<ul>
<?php
$args = array( 'numberposts' => '5' );
$recent_posts = wp_get_recent_posts( $args );
foreach( $recent_posts as $recent ){
echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';
}
?>
</ul>
</main><!-- #main -->
Cela fonctionne, mais je ne sais pas comment charger vignettes + extraits. Le plus important est-ce correct?
J'aurais tendance à ne pas aller avec wp_get_recent_posts
ni même get_posts
pour les requêtes personnalisées comme ça. Par défaut, les balises de modèle telles que the_excerpt()
ne sont pas disponibles pour ces fonctions et vous devez utiliser setup_postdata($post)
pour accéder à ces balises de modèle.
Personnellement, j'utiliserais WP_Query
dans un cas comme celui-ci, qui est plus flexible, en particulier lorsque vous avez une requête personnalisée qui doit être paginée.
Voici un exemple de requête personnalisée pour obtenir les 5 derniers messages. Remarque: je n'ai pas inclus de balises HTML. Pour obtenir une liste de tous les arguments disponibles, consultez le lien que j'ai fourni dans WP_Query
$args = array(
'posts_per_page' => 5,
'order' => 'DESC'
);
$rp = new WP_Query( $args );
if($rp->have_posts()) :
while($rp->have_posts()) : $rp->the_post();
the_title(); // posttitle
if ( has_post_thumbnail() ) { // check if the post has a Post Thumbnail assigned to it.
the_post_thumbnail(); //display the thumbnail
}
the_excerpt(); // displays the excerpt
endwhile;
wp_reset_postdata(); // always always remember to reset postdata when using a custom query, very important
endif;
Pour en savoir plus:
La boucle (Juste une remarque ici, certains exemples utilisent query_posts
, qui ne devrait jamais être utilisé. Utilisez plutôt WP_Query
pour construire des requêtes personnalisées)
Vous pouvez utiliser:
get_the_post_thumbnail($recent['ID'], 'post-thumbnail');
afin d'obtenir la vignette. Malheureusement, il n’ya aucun moyen d’obtenir l’extrait, vous pouvez toutefois couper le contenu en utilisant PHP.
Alternativement, il y a un crochet que je n'ai pas utilisé auparavant, vous pouvez l'essayer et voir ses œuvres pour l'extrait:
get_post_field();
Vous pouvez obtenir l'image en utilisant ce code:$src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium', false, '' ); $thumbnailSrc = $src[0];
où 'moyen' est la taille de la vignette, vous pouvez le remplacer par miniature, grande ou toute taille spéciale créé avec le support des vignettes sur functions.php ej.add_image_size( 'postslider', 680,310, true );
J'imprime l'image avec img src="php echo $src; ?
n'oubliez pas d'inclure les balises php dans le code
Pour l'extrait, la méthode la plus simple est the_excerpt (); au lieu de the_content ();
Il semble que les deux réponses précédentes vous rapprochent, mais si je comprends bien, vous devrez peut-être remplacer la boucle foreach
par un second appel de boucle wordpress, après la requête personnalisée (voir un exemple ici dans la section "exemples"):
La raison pour laquelle je suggère d'utiliser la boucle wordpress est que la fonction the_excerpt()
ne fonctionne que dans le cadre d'une boucle standard. Si vous êtes dans "la boucle", vous utiliseriez
the_post_thumbnail( 'your-custom-post-size-here' );
plutôt que
get_the_post_thumbnail
comme le suggère Yusri Mathews. Sa réponse fonctionnera en dehors de "the Loop", dans des cas comme votre boucle foreach
.
Mais comme mentionné ci-dessus, si vous êtes dans "the Loop", vous avez accès à the_excerpt()
qui devrait vous mener là où vous allez.