Как создать шаблон страницы для отображения произвольного типа записей?

3 февр. 2012 г., 09:35:56
Просмотры: 56.6K
Голосов: 2

Я хочу создать файл шаблона страницы для отображения записей произвольного типа контента. Я работал с этим кодом, который нашел на этом сайте, но он ничего не выводит. Кто-нибудь знает, в чем проблема?

<?php /* Название шаблона: Архив произвольного типа записей */
get_header(); ?>

<?php
global $query_string;
query_posts($query_string . "post_type=YOUR-CUSTOM-POST-TYPE&post_status=publish&posts_per_page=10");
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<h2><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>

<?php endwhile;
endif; ?>
<div class="navigation">
    <div class="alignleft"><?php next_posts_link('Предыдущие записи') ?></div>
    <div class="alignright"><?php previous_posts_link('Следующие записи') ?></div>
</div>
<?php wp_reset_query(); ?>

<?php get_sidebar(); ?>
<?php get_footer();?>
0
Все ответы на вопрос 3
2

Вам не нужно использовать запрос, просто создайте свой шаблон и назовите его single-ВАШ_ПОЛЬЗОВАТЕЛЬСКИЙ_ТИП_ЗАПИСИ.php. Для получения дополнительной информации ознакомьтесь с:

3 февр. 2012 г. 10:05:59
Комментарии

Я не совсем понимаю. Не могли бы вы подробнее объяснить ваш ответ?

Keith Groben Keith Groben
3 февр. 2012 г. 10:13:57

Стандартный шаблон страницы для произвольного типа записи - это single-NAME.php. Например, если ваш тип записи называется "Sports", вам нужно создать этот шаблон и сохранить его как single-sports.php. У вас уже есть созданная тема, вам просто нужно удалить этот запрос в строке 5 и оставить цикл как есть. Также обратите внимание, что ссылки "next" и "prev" не будут работать, так как эти функции не работают с CPT (произвольными типами записей), однако для этого существуют плагины - google вам в помощь.

andresmijares andresmijares
3 февр. 2012 г. 10:20:40
3

Если вы создали новый тип записи (Custom Post Type), то для его отображения на сайте вам нужно использовать следующие файлы в папке вашей темы:

  • archive-{CPT}.php
  • single-{CPT}.php (Необязательно, если вы хотите отображать одиночную запись по-другому)

Замените {CPT} на название вашего типа записи. Затем в этих файлах просто используйте стандартный цикл, как в файле index.php.

Например:

<?php get_header(); ?>

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <?php /* Содержимое ваших записей */ ?>

    <?php endwhile; else: ?>
        <div class="post">
            <p><?php _e('Извините, нет записей, соответствующих вашему критерию.', "hi-rezz"); ?></p>
        </div>
    <?php endif; ?>

<?php get_footer(); ?>
3 февр. 2012 г. 10:40:15
Комментарии

Спасибо за подробное объяснение. Пожалуйста, проявите терпение, так как я относительно новичок в подобных модификациях WordPress. Мой CPT называется "New Movies". Слаг для него "new_movies". Архивный файл - "archive-new_movies.php". Значит, мне нужно поместить код цикла в архивный файл?

Keith Groben Keith Groben
3 февр. 2012 г. 10:54:00

Да, это правильно

Scott Scott
3 февр. 2012 г. 11:04:40

Я добавил код цикла, но вижу только постоянную ссылку на страницу. Затем я скопировал стандартную архивную страницу, но получил тот же результат. Есть ли у вас идеи, почему это может происходить?

Keith Groben Keith Groben
3 февр. 2012 г. 11:43:31
1
-1
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <?php /* Содержимое ваших записей */ ?>

<?php endwhile; else: ?>
    <div class="post">
        <p><?php _e('Извините, нет записей, соответствующих вашим критериям.', "hi-rezz"); ?></p>
    </div>
<?php endif; ?>
31 мая 2017 г. 15:07:49
Комментарии

Пожалуйста, [отредактируйте] ваш ответ и добавьте объяснение: почему это может решить проблему?

fuxia fuxia
31 мая 2017 г. 17:02:34