Модератор
Юрій
(@yube)
Задача вывести рандомно максимум шесть постов три поста из который должны быть из категории реклама, а остальные три из всех других при этом исключив текущий просматриваемый пост.
Я бы делал примерно так (вот прямо по Вашему описанию):
1. получаем 3 поста из рубрики «реклама», используя get_posts()
$a = get_posts(array('numberposts'=>3, 'category'=>42));
2. получаем 3 поста из всех рубрик, кроме «реклама», и исключая текущий пост.
$b = get_posts(array('numberposts'=>3, 'category'=>-42, 'exclude'=>get_the_ID()));
3. сливаем оба массива в один
$c = array_merge($a, $b);
4. перемешиваем полученный массив
$c = shuffle($c);
5. в цикле выводим посты из массива.
foreach ($c as $p ){
###
}
(Код исключительно для иллюстрации)
есть функция query_posts()
Забудьте о ней. Не читайте старьё.
Используйте wp_query (get_posts, pre_get_posts) и правильную документацию.
А ещё лучше — подберите в оф каталоге тему, похожую по структуре и сделайте к ней дочку. Это не только облегчит работу и возможно добавит функциональности, но и повысит безопасность и совместимость с будущими версиями ВП и плагинов.
-
Ответ изменён 8 лет назад пользователем
SeVlad. Причина: поправил ссылку
Юрий спасибо. Посмотрел вами данный код и похоже это сработает(я себе что-то в этом роде представлял, но не знал как реализовать.). В понедельник протестирую.
SeVlad Да вы правы, документация прямо под носом. Я пытался читать, понять, но для меня почему-то запутано кажется и перешел на видео ютуб. Или я как-то не правильно воспринимаю. Был бы очень благодарен вам если бы меня направили. От посадки верстки до профи в этой документации. Где начать, а где финишировать.
киньте ссылки пожалуйте в порядке сверху вниз. от 0 до про.
п.с. Я даже эту ветку с трудом нашел )))
Был бы очень благодарен вам если бы меня направили. От посадки верстки до профи в этой документации. Где начать, а где финишировать.
Начиная от ссылки которую я дал. Лучше, конечно, перейти на англ версию.
Но ещё раз повторю — в данном случае наверняка лучше сделать дочернюю тему. Это будет и проще и быстрее и правильнее. А более глубоким изучением устройства тем ВП займетесь позже.
Тема ВП — это (как Вы уже наверное убедились), не только внешний вид, но и множество функций.
АПД. В посте выше поправил ссылку на wp_query.
-
Ответ изменён 8 лет назад пользователем
SeVlad.
короче сработало ваша идея Юрий.
но пришлось попотеть. )) Выше демонстрационный код давали, а я чайник )))) но сделал все же благодаря документации спасибо за это SeVlad
предоставляю готовое решение для тех кто сталкнется с такой ситуацией. Сразу скажу. решение не идеальное. Надеюсь кто-то доработает
<?php
$posts1 = get_posts(array(‘orderby’=> rand, ‘numberposts’=>3, ‘category’=>9));
$posts2 = get_posts(array(‘orderby’=> rand, ‘numberposts’=>3, ‘category’=>-9));
$posts = array_merge($posts1, $posts2);
$posts = get_posts(‘orderby=rand’);
foreach($posts as $post) { ?>
» title=»<?php the_title(); ?>»><?php the_title(); ?>
<?php } ?>
да еще одна проблемка появилась после )) комменты начали рандомить )) решение: перед закрывающим тегом ?> поставить wp_reset_postdata(); и все будет норм