Mostrare le immagini in evidenza dei custom post type nella homepage
Sto lavorando con underscores cercando di costruire un template personalizzato.
Ho creato un template per la homepage e anche un file single-post per i custom post type.
Quello che sto cercando di ottenere è visualizzare nella homepage una sorta di galleria con le immagini in evidenza di ciascun custom post type con titolo e tag.
Ho provato diversi modi, pensavo fosse qualcosa con wp_get_archives
ma non sono ancora riuscito a ottenerlo.
Se avete qualche suggerimento sarebbe fantastico.
Grazie!
L'utilizzo di wp_get_archives
restituirà un template predefinito per i risultati. È necessario creare una query personalizzata e un template per ottenere ciò che desideri. Poiché non so esattamente cosa stai cercando, ecco un codice di base che potrebbe fare al caso tuo:
// Ottieni un elenco di categorie
$terms = get_terms(array('taxonomy' => 'category'));
// Esegui una query per ogni categoria
foreach ($terms as $term){
$args = array(
'post_type' => 'custom_type',
'posts_per_page' => '1',
'order_by' => 'date',
'order' => 'ASC',
'cat' => $term->ID
);
$new_query = new WP_Query ($args);
if ($new_query->have_posts()) {
while($new_query->have_posts()){
$new_query->the_post();
// Titolo del post
the_title();
// Immagine in evidenza del post
the_post_thumbnail('thumbnail');
}
}
wp_reset_postdata();
}
Questo codice mostrerà 1 post per ogni categoria, visualizzando l'immagine in evidenza e il titolo. Tuttavia, genererà molte query se hai numerose categorie (ad esempio 50 o più). Ti consiglio di utilizzarlo con un plugin di caching.
In alternativa, puoi ottenere un elenco di post e visualizzarli in una vetrina, insieme al nome della categoria:
$args = array(
'post_type' => 'custom_type', // Il tuo custom post type
'posts_per_page' => '8', // Modifica il numero come preferisci
'order_by' => 'date', // Ordinamento opzionale
'order' => 'ASC',
);
$new_query = new WP_Query ($args);
if ($new_query->have_posts()) {
while($new_query->have_posts()){
$new_query->the_post();
the_title();
the_post_thumbnail('thumbnail');
// Ottieni l'elenco delle categorie del post
$categories = get_the_category($post->ID);
foreach ($categories as $category) {
echo $category->name;
}
}
}
wp_reset_postdata();

Puoi utilizzare il loop di WordPress che è disponibile in qualsiasi tema. Ecco lo snippet di codice base. Copialo nel file della tua homepage e verifica se il risultato è quello atteso:
<?php if( have_posts() ) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="blog">
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<hr />
<div class="text-box">
<?php
if( has_post_thumbnail() ) {
echo '<div style="float:left;">';
the_post_thumbnail('thumbnail');
echo '</div>';
}
?>
</div>
</div>
<?php endwhile; ?>
<?php endif; ?>
È il codice del mio child theme.
