Отображение изображений записей из произвольного типа записей на главной странице

15 июн. 2017 г., 14:19:30
Просмотры: 32.9K
Голосов: 0

Я работаю с темой underscores и пытаюсь создать свой собственный шаблон.

Я создал шаблон главной страницы и файл single-post для произвольных типов записей.

Я пытаюсь отобразить на главной странице что-то вроде галереи с изображениями записей из каждого произвольного типа записей вместе с заголовком и метками.

Я пробовал разные способы, думал, что это можно сделать с помощью wp_get_archives, но так и не получилось.

Если у вас есть какие-либо предложения, это было бы здорово.

Спасибо!

0
Все ответы на вопрос 2
0

Использование wp_get_archives вернёт предопределённый шаблон для результатов. Вам нужен собственный запрос и шаблон для этого. Поскольку я не знаю, что именно вы ищете, я предложу базовый код для вашей ситуации:

// Получаем список категорий
$terms = get_terms(array('taxonomy' => 'category')); 
// Запускаем запрос для каждой категории
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();
            // Заголовок записи
            the_title();
            // Миниатюра записи
            the_post_thumbnail('thumbnail');
        }
    }
    wp_reset_postdata();
}

Этот код выведет по 1 записи из каждой категории, а также их миниатюру и заголовок. Однако он создаст много запросов, если у вас много категорий (например, 50 или более). Рекомендую использовать его с плагином кеширования.

Также вы можете получить список записей и отобразить их в виде галереи вместе с названием категории:

$args = array(
'post_type' => 'custom_type', // Ваш пользовательский тип записи
'posts_per_page' => '8', // Измените число на желаемое
'order_by' => 'date', // Необязательная сортировка
'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');
        // Получаем список категорий записи
        $categories = get_the_category($post->ID);
        foreach ($categories as $category) {
            echo $category->name;
        }
    }
}
wp_reset_postdata();
15 июн. 2017 г. 14:45:53
0

Вы можете использовать цикл WordPress, который доступен в любой теме. Вот базовый фрагмент кода. Скопируйте его в файл главной страницы и проверьте, соответствует ли результат ожиданиям:

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

Это код из моей дочерней темы.

15 июн. 2017 г. 14:52:50