Mostrare le immagini in evidenza dei custom post type nella homepage

15 giu 2017, 14:19:30
Visualizzazioni: 32.9K
Voti: 0

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!

0
Tutte le risposte alla domanda 2
0

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();
15 giu 2017 14:45:53
0

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.

15 giu 2017 14:52:50