Поддержка → Проблемы и решения → Сортировка постов на главной странице
Сортировка постов на главной странице
-
Помогите пожалуйста решить следующую задачу:
мне необходимо выводить на главную страницу свежие посты по рубрикам, т.е.
Название рубрики 1
2 последних поста рубрики 1
Название рубрики 2
2 последних поста рубрики 2
Название рубрики 3
2 последних поста рубрики 3
Прошу подсказать или дать ссылки на полезный материал по теме. В поисковиках решения пока найти не удалось.
Заранее благодарен откликнувшимся.
-
Это воспроизвести несложно, только вам надо определиться, какой уровень категорий брать (родитель, дочка, внучка, если таковые есть) и что делать, если пост дублируется (если таковые есть) в нескольких категориях.
Подсказываю:
получаете категории
$categories = get_categories();
Уходите в цикл
foreach (categories as category) {
выводите заголовок категории, ссылку, что там еще надо, затем получаете два поста к этой категории
$posts = get_posts(array('numberposts' => 2,'category' => $category->term_id))
опять уходим в цикл
foreach ($posts as post) {
здесь выводим название, ссылку поста, и что еще надо.
не забываем закруглить оба цикла
}}
Останется только оформить все дело стилями и радоваться жизни 😉
—
Помогут функции get_categories() и get_posts()Спасибо огромное за подробный ответ.
Я хочу использовать только 3 конкретные родительские категории (есть и другие). Как их указать?только 3 конкретные
$categories = get_categories(array('include' => '1,2,3');
где 1,2,3 — ID категорий, которые вы хотите включить в выборку.
—
Я вам дал ссылку на доки, там подробнее все возможные аргументы описаны.спасибо, буду разбираться
можно сделать грубо=)
<?php $query = new WP_Query(‘cat=1&posts_per_page=2’); // указываем категорию 1 и двапосто на странице
while($query->have_posts()){ $query->the_post(); ?>///////********* здесь содержимое******//////
<?php } ?>
<?php wp_reset_postdata(); // сбрасываем переменную $post ?>Почему грубо и в чем принципиальная разница?
Я пока новичок зеленый)) еще первый вариант не собралУважаемый wikicms! Помогите доразобраться.
Предложенный принцип построения понятен, но у меня проблемы с:выводите заголовок категории, ссылку, что там еще надо, затем получаете два поста к этой категории
Подскажите пожалуйста, как указать название категории со стилем <h2 class=»page-title»> и ссылкой на соответствующую категорию.
здесь выводим название, ссылку поста, и что еще надо.
не забываем закруглить оба циклаДля постов необходимо вывести анонсы
Подскажите пожалуйста, как указать название категории со стилем <h2 class=»page-title»> и ссылкой на соответствующую категорию.
<h2 class="page-title"><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
Для постов необходимо вывести анонсы
<?php the_excerpt(); ?>
как указать название категории со стилем <h2 class=»page-title»> и ссылкой на соответствующую категорию.
Примерно так:
echo '<h2 class="page-title">Category: <a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a></h2>';
Для постов необходимо вывести анонсы
$post->post_excerpt
или так (если хотим больше)foreach($posts as $post) : setup_postdata($post); ?> <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> <?php the_excerpt(); ?> <?php endforeach; ?>
—-
Кстати, дальше указанных мной ссылок я никуда и не ходил, и все примеры взял оттуда 😉
—-
Прим.: Этот код, как и мультилуп будут производить эн-ное количество запросов к БД, поэтому без надобности не увлекайтесь сим чудом, ну или на крайний случай, используйте кеширование. В моем случае это будет 1 запрос на «взятие» категорий и 3 на получение постов.. Может и еще что вылезет, шут, как говорится, его знает 🙂Спасибо wikicms и ddd7777!
Уж простите дурака))) Мне без базовых знаний тяжеловато разобраться, и я уже собрал комплект parse error)))) Хотел посоветоваться, может проще тогда собирать код примитивно: заголовки разделов набрать ручками, а к БД отправлять только в поисках последних постов в конкретной категории? правда видимо придется 3 раза отправлять))) Или я все не правильно понимаю.Вывел заголовок раздела (решил пока без ссылки сделать):
<h2 class="page-title"><?php printf( __( '<span>%s</span>', 'themater' ), 'La-la-la'); ?></h2>
Дальше в индексе у меня шел следующий код, выводящий свежие посты:
<?php if (have_posts()) : while (have_posts()) : the_post(); get_template_part('post', 'homepage'); endwhile; else : get_template_part('post', 'noresults'); endif; get_template_part('navigation'); ?>
Как этот код переделать, указав из какой конкретной категории (со всеми ее дочками) брать посты и что этих постов должно быть всего 2? и можно ли его отчистить от излишних вариантов (если, если,….. ведь в категории точно есть посты)
И так планирую сделать 3 раза. Или я не правильно рассуждаю?Получилась следующая конструкция:
<?php $categories = get_categories(array('include' => '1,2,4')); foreach($categories as $category) { echo '<h2 class="page-title"><a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a></h2>'; $posts = get_posts(array('numberposts' => 2,'category' => $category->term_id)); foreach ($posts as post) { the_excerpt(); } } ?>
Причем get_categories работает как надо, за что большое спасибо, а вот после добавления get_posts выдает ошибку:
Parse error: syntax error, unexpected ‘)’, expecting T_PAAMAYIM_NEKUDOTAYIM
Взываю о помощи
Доллар забыли
foreach ($posts as $post) {
the_excerpt();
}как прозаично 🙂 спасибо
- Тема «Сортировка постов на главной странице» закрыта для новых ответов.