С каждой категории по посту

Уважаемые, как мне реализовать такую идею:

Хочу создать одну страничку на которой будут выдаваться по 1-2 поста с каждой категории + название самой категории

заранее спасибо

А сколько у вас категорий?

Сейчас около 20, будут менятся время от времени, но количество останется не меньше 16. А что?

Вы хотите вывести из 16 категорий по 2 записи на одну страничку, это 38 записей. В голову пока ничего такого универсального не приходит. А вот вывод из различных категорий на одну страницу уже был описан на форуме.

Вы хотите вывести из 16 категорий по 2 записи на одну страничку, это 38 записей.

а в чём проблема? я их буду как анонсы выдавать

А вот вывод из различных категорий на одну страницу уже был описан на форуме.

пробую найти: http://forum.maxsite.org/search.php?search_id=109753692 пока безрезультатно 🙁

//выводятся 2 новости с анонсами из категории 28
<div>
    <h1>ГЛАВНЫЕ НОВОСТИ</h1>
    <?php $my_query = new WP_Query('showposts=2&cat=28');
        while ($my_query->have_posts()) : $my_query->the_post();
        $do_not_duplicate = $post->ID;?>
    <div>
            <h3><a href="<?php the_permalink(); ?>" rel="bookmark" title="Подробнее &raquo; <?php the_title(); ?>"><?php the_title(); ?></a></h3>
             <b class="dateTime"><?php the_time('d M Y G:i'); ?></b><?php the_content('Подробнее &raquo;'); ?>
    </div>
    <?php endwhile;?>
        <p><a href="<?php print get_category_link(28); ?>">Показать все новости из категории 28</a></p>
</div>
//выводятся 4 новости из категории 29 без анонсов
<div>
    <?php
    $my_query = new WP_Query('showposts=4&cat=29');
    if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 
    if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts);
    ?>
    <b class="dateTime"><?php the_time('d M Y G:i'); ?></b></b>
    <h3><a href="<?php the_permalink(); ?>" rel="bookmark" title="Подробнее &raquo; <?php the_title(); ?>"><?php the_title(); ?></a></h3>
    <?php endwhile; endif; ?>
    <p><a href="<?php print get_category_link(29); ?>">Показать все новости из категории 29</a></p>
</div>

Дальше повторяем код как для категории 29 и будет вам счастье. Если какой либо пост у вас будет принадлежать 2 категориям, то выведется только в одном случаем, для этого: if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts);

Тогда поищите здесь http://codex.wordpress.org/%D0%A6%D0%B8%D0%BA%D0%BB_WordPress и здесь http://rhymedcode.net/1001-wordpression-loops/ Предупреждаю сразу: ищите МЕТОД, а не готовое решение.

//выводятся 2 новости с анонсами из категории 28

Дальше повторяем код как для категории 29 и будет вам счастье. Если какой либо пост у вас будет принадлежать 2 категориям, то выведется только в одном случаем, для этого: if( $post->ID == $do_not_duplicate ) continue; update_post_caches($posts);

Спасибо будем разбираться 🙂
если таким "тупым методом, то нагрузки на базу сильно прибавиться 🙂

Тогда поищите здесь http://codex.wordpress.org/%D0%A6%D0%B8%D0%BA%D0%BB_WordPress и здесь http://rhymedcode.net/1001-wordpression-loops/ Предупреждаю сразу: ищите МЕТОД, а не готовое решение.

ok! будем пасматреть 😉

если таким "тупым методом, то нагрузки на базу сильно прибавиться :-)

"Острого" пока не встречал. Сколько категорий – столько "лишних" запросов.

"Острого" пока не встречал. Сколько категорий - столько "лишних" запросов.

раз инструментами WordPressa не получается, тогда будем делать своими ручками 🙂

Бог в помощь! Потом расскажете, как посрамили разработчиков WP.

Бог в помощь! Потом расскажете, как посрамили разработчиков WP.

не в этом дело, просто задача будет проще если не надо будет кучу других функций сайта юзать 🙂

Вам в любом случае придётся делать запросы в базу. Чтобы посмотреть сколько запросов разместите следующий код, допустим в footer:

<?php if (is_user_logged_in()) { ?>в базу
<?php echo get_num_queries(); ?> запросов <?php timer_stop(1); ?> секунд
<?php } ?>

Отображается если вы зашли под администратором, простое решение, если не использовать плагины.

Anonymous
Отправить
Ответ на: