• Здравствуйте,

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

    Плагин page-links-to при указании привязки как blog-url/?cat=x не подходит так как:
    1) фактически перенаправляет на главную страницу, что отображается на панели навигации
    2) выводит заголовок рубрики (что не нужно)
    3) насколько я понимаю не дает возможности задать шаблон для этой специальной страницы.

    По этому покопавшись на данном форуме решил попробовать ручками. Для начала решил добиться, чтобы на заглавной странице отображались посты нужной категории. Для этого заменил файл index.php в каталоге на немного подправленный свой (основной фрагмент):

    <?php
    /*
    Template Name: AlexBlog
    */
    ?>

    <?php
    /*
    * This template is used to ouput a blog of a specified below person.
    * Set up person’s blog via its category slug.
    */
    $blog_of_person = 3; //»strangers-notes»;
    $person_posts_cnt = 0; // to count posts of a person to handle if there is no one.
    ?>

    <?php get_header(); ?>
    <div class=»contentLayout»>
    <div class=»content»>

    <div class=»Block»>
    <div class=»Block-body»>

    <div class=»BlockContent»>
    <div class=»BlockContent-body»>
    <?php if (have_posts()) : ?>

    <?php while (have_posts()) : the_post(); ?>
    <?php if (is_category($blog_of_person) || is_single() && in_category($blog_of_person)) {
    $person_posts_cnt++; ?>

    <div class=»post» id=»post-<?php the_ID(); ?>»>
    <h2>» rel=»bookmark» title=»<?php the_title_attribute(); ?>»><?php the_title(); ?></h2>
    <small><?php the_time(‘d M Y’) ?> <!— Автор: <?php the_author() ?> —></small>

    <div class=»entry»>
    <?php the_content(‘Читать полностью »’); ?>
    </div>

    <p class=»postmetadata»><?php the_tags(‘Теги: ‘, ‘, ‘, ‘
    ‘); ?> <?php edit_post_link(‘Править’, », ‘ | ‘); ?> <?php comments_popup_link(‘Ваш отзыв »’, ‘1 отзыв »’, ‘Отзывов: % »’); ?></p>
    </div>

    <?php } /* <—if (is_category($blog_of_person)) { */ ?>

    <?php endwhile; ?>

    <div class=»navigation»>
    <div class=»alignleft»><?php next_posts_link(‘« Раньше’) ?></div>
    <div class=»alignright»><?php previous_posts_link(‘Позже »’) ?></div>
    </div>

    <?php else : ?>

    <h2 class=»center»>Не найдено</h2>
    <p class=»center»>К сожалению, по вашему запросу ничего не найдено.</p>

    <?php endif; ?>

    <?php if (!$person_posts_cnt) { ?>
    /* попадаю сюда */
    <h2 class=»center»>Не найдено</h2>
    <p class=»center»>К сожалению, по вашему запросу ничего не найдено2.</p>

    <?php } ?>

    </div>

    Соответственно, пробный пост не выводиться, куда в ветвлении попадаю указано в комментарии. Пробовал указывать и slug и ID категории — без разницы. Подскажите, пожалуйста, где я ошибся?

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Упростил выражение в условии:
    было:
    <?php if (is_category($blog_of_person) || is_single() && in_category($blog_of_person)) {
    стало:
    <?php if (in_category($blog_of_person)) {
    И, заработало!!! — вывод постов заданной категории на главной странице.
    Похоже, что в первом варианте где-то пропущены скобки.
    Возможно так???:
    <?php if (in_category($blog_of_person) || (is_single() && is_category($blog_of_person))) {
    Честно говоря не знаю в каком случае, работает вторая часть запроса — возможно при каком-то не стандартном запросе???

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Условия is_category() и is_single() не выполняются, поскольку шаблон используется для вывода страницы, а не записи или рубрики. Для проверки принадлежности записи в цикле к определённой категории достаточно условия in_category().

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Отображение постов определенной рубрики/категории на» закрыта для новых ответов.