• ДОБРО ПОЖАЛОВАТЬ В КЛУБ ПО WORDPRESS

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

    Присоединяйтесь к нам, вам обязательно понравится - Присоединится

Вопрос вывод рандомных записей из разных категорий - WordPress

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
Здравствуйте уважаемые форумчане. Необходима помощь в одном деле. Я не програмист пхп но как верстальшик немного теории знаю пхп. Сверстал на бутстрап выданый мне псд и теперь его необходимо натянуть на вордпресс. Это я уже сделал. Но, есть маленькая проблемка. Для меня она большая. есть функция query_posts() где я указываю с каких категории, какое количество и как выводить. Тут все норм.

Теперь сама проблема. Допустим есть некий пост, в футере этого поста шесть блоков по три в два ряда. Также есть категории одна из который категория реклама.

Задача вывести рандомно максимум шесть постов три поста из который должны быть из категории реклама, а остальные три из всех других при этом исключив текущий просматриваемый пост.

3 дня гуглю, делаю какие-то эксперименты, ну ни как.

п.с. Прозьба кто знает хорошие качественные видео по созданию темы из верстки дайте ссылку. Только на вордпресс сайт не отправляйте и вп-кама тоже ıмı пользуюсь. Да, в ютубе много видео, но все не до конца доводят. А мне надо фул натяжку верстки "создание страниц(page, single, category и т.д. и т.п.), сайдбар, подключение виджетов".
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Здравствуйте уважаемые форумчане. Необходима помощь в одном деле. Я не програмист пхп но как верстальшик немного теории знаю пхп. Сверстал на бутстрап выданый мне псд и теперь его необходимо натянуть на вордпресс. Это я уже сделал. Но, есть маленькая проблемка. Для меня она большая. есть функция query_posts() где я указываю с каких категории, какое количество и как выводить. Тут все норм.

Теперь сама проблема. Допустим есть некий пост, в футере этого поста шесть блоков по три в два ряда. Также есть категории одна из который категория реклама.

Задача вывести рандомно максимум шесть постов три поста из который должны быть из категории реклама, а остальные три из всех других при этом исключив текущий просматриваемый пост.

3 дня гуглю, делаю какие-то эксперименты, ну ни как.

п.с. Прозьба кто знает хорошие качественные видео по созданию темы из верстки дайте ссылку. Только на вордпресс сайт не отправляйте и вп-кама тоже ıмı пользуюсь. Да, в ютубе много видео, но все не до конца доводят. А мне надо фул натяжку верстки "создание страниц(page, single, category и т.д. и т.п.), сайдбар, подключение виджетов".
Возможно не совсем Вас понял, но рассмотрю как вижу. 6 блоков в футере... ставим в каждый виджет постов в виджете объявляем из каких рубрик выводить данные и все ОК. Соответственно рекламные статьи помечаем как рубрика реклама ... например с ID 7 ... ну итд
 

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
Возможно не совсем Вас понял, но рассмотрю как вижу. 6 блоков в футере... ставим в каждый виджет постов в виджете объявляем из каких рубрик выводить данные и все ОК. Соответственно рекламные статьи помечаем как рубрика реклама ... например с ID 7 ... ну итд
К сожалению вы меня неправильно поняли.
попробую более развернуто:

необходимо случайным образом вывести 6 постов 3 из них из категории реклама, а остальные из всех других, сортировка тоже рандомно(это я знаю) за исключением просматриваемого поста..
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Вроде я все правильно понял... Берем Recent Posts Widget Extended задаем ему рубрики из которых выводить, ставим сортировку рандом, размещаем виджеты в футере (хоть 20 штук) и радуемся. Не уловил проблемы честно говоря.
 

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
К сожалению вы меня неправильно поняли.
попробую более развернуто:

необходимо случайным образом вывести 6 постов 3 из них из категории реклама, а остальные из всех других, сортировка тоже рандомно(это я знаю) за исключением просматриваемого поста..
без плагина
 

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
Вроде я все правильно понял... Берем Recent Posts Widget Extended задаем ему рубрики из которых выводить, ставим сортировку рандом, размещаем виджеты в футере (хоть 20 штук) и радуемся. Не уловил проблемы честно говоря.
без плагина
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Странно конечно, но тогда... Пишем функцию выборки из базы данных постов создаем массив данных запускаем рандом функцию которая генерит массив данных по условиям (сколько постов из каких рубрик и категорий, без повтора...) формируем запрос к БД с функцией вывода... создаем шорт код для итогового вывода (можно не создавать) вставляем данный кусок кода в нужном месте. все
 

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
Странно конечно, но тогда... Пишем функцию выборки из базы данных постов создаем массив данных запускаем рандом функцию которая генерит массив данных по условиям (сколько постов из каких рубрик и категорий, без повтора...) формируем запрос к БД с функцией вывода... создаем шорт код для итогового вывода (можно не создавать) вставляем данный кусок кода в нужном месте. все
)) код в студию пожалуйста. для примера
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Код:
function gb_rand_post()
{
    $posts = array( 54, 59, 61, 64 );
    $post = get_post( $posts[ mt_rand( 0, count( $posts ) - 1 ) ] );
    $result = '';

    if( !is_null( $post ) )
    {
        $result .= '<div class="gb_rand_post">';
        $result .= '';
        $result .= '<h4>' . $post->post_title . '</h4>';
        $result .= '<div>' . $post->post_content . '</div>';
        $result .= '</div>';
    }

    return $result;
}
add_shortcode('gb_random_post','gb_rand_post');
Функция gb_rand_post, описанная выше, добавляет шорткод (от англ. shortcode - "короткий код") - [gb_random_post] в арсенал шорткодов вашего сайта. Это значит, что вы можете вставлять этот шорткод в страницы, записи, виджеты сайдбара (боковой колонки/колонок сайта) и даже в любые другие файлы-составляющие вашей темы, например header.php или footer.php.
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Код:
<?php
global $post;
$postid = $post->ID;
$args = array(
'orderby' => 'rand',
'showposts'=>5,
'post__not_in'=>array($postid)
);
query_posts($args);
echo '<ul>';
while (have_posts()) : the_post();
echo '<li><a href="'.get_permalink().'" title="'.the_title('','',false).'">'.the_title('','',false).'</a></li>';
endwhile;
echo '</ul>';
?>
случайный пост внизу поста
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
забыл это нужно например в функции темы добавить сначала
Код:
<?php

query_posts(array('orderby' => 'rand', 'showposts' => 1));

if (have_posts()) :

while (have_posts()) : the_post(); ?>

<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>

<?php the_content(); ?>

<?php endwhile;

endif; ?>
 

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
нет увы я писать не буду, это занятие ерундой на мой взгляд.
решение:
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 ){
###
}

Модератор у меня есть 2 купленные темы "betheme, thegem" что делать? Как с народом тут делится, обмениваться. Я новенький

p.s. лицензии конечно не дам ))) thegem без лицензии не загрузить демо
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
Конечно. Мы тут все тупые.
я не говорю что тупые или еще что-то. Вы писали так словно хотите просто набить репу себе, сообщения при этом не знаю ответа. Поэетому и написал. На моем месте вы бы подумали также и это относилось не к всем, а к вам лично. Я всех под одну гребенку не собираю
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
я не говорю что тупые или еще что-то. Вы писали так словно хотите просто набить репу себе, сообщения при этом не знаю ответа. Поэетому и написал. На моем месте вы бы подумали также и это относилось не к всем, а к вам лично. Я всех под одну гребенку не собираю
Мне репа... ))) хороший юмор...
В целом на форум люди приходят за поиском "дороги" а не для того чтоб рассказать как они круты или что то подобное, я в своих сообщениях ни к кому не обращаюсь с позиции их уровня знаний а рассматриваю разные решения для разного уровня знаний, и тем более ни кого не поучаю, учусь сам делюсь своим мнением и ни в кое мере не настаиваю на абсолютности своих знаний или мнений. Поиск решений начинается как не странно с позиции простых вариантов, и возможно к усложнению задачи или цели. Использование кода внутри WP не всегда оправдано и прочее (о чем я писал статью) поэтому Вам и было предложено простое решение... Написание кода... Зачем??? Он написан более умными людьми и пытаться изобретать велосипед глупость, о чем я и написал. Для решения Вашей задачи я предложил 2 варианта... Плагин и код. Обладая достаточным уровнем знаний можно из этого получить свое личное решение ни на что не похожее и уникальное для Вашей задачи, что и стоит в задаче любого форума, помочь направить на правильный путь, а не сделать за Вас. ИХМО
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Случайные записи на страницах категорий. Вставить в функцию темы.

Код:
// Случайные записи на страницах категорий
function maks_post_order( $query ) {
if ( $query->is_archive ) {
$query->set( 'orderby', 'rand' );
}
}
add_action( 'pre_get_posts', 'maks_post_order' );
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
Простой вариант рандома вставляем например в singke.php (несколько не подходит для решения тк нет разделения на категории но можно доделать)
Код:
<b>Случайные записи</b>
<ul>
<?php $posts = get_posts('orderby=rand&numberposts=5');
foreach($posts as $post) { ?>
<li><a href="<?php the_permalink(); ?>
" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php } ?>
</ul>
 

Islam

СВОЙ

Islam

СВОЙ
Сообщения
44
Простой вариант рандома вставляем например в singke.php (несколько не подходит для решения тк нет разделения на категории но можно доделать)
Код:
<b>Случайные записи</b>
<ul>
<?php $posts = get_posts('orderby=rand&numberposts=5');
foreach($posts as $post) { ?>
<li><a href="<?php the_permalink(); ?>
" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php } ?>
</ul>
спасибо огромное. достаточно. Из ваших примеров кое-что смастерю имеется логика если совместить. Сам учусь.

Модератор у меня есть 2 купленные темы "betheme, thegem" что делать? Как с народом тут делится, обмениваться. Я новенький

p.s. лицензии конечно не дам ))) thegem без лицензии не загрузить демо
 

Wildcdu

ЭКСПЕРТ

Wildcdu

ЭКСПЕРТ
Сообщения
1,120
спасибо огромное. достаточно. Из ваших примеров кое-что смастерю имеется логика если совместить. Сам учусь.

Модератор у меня есть 2 купленные темы "betheme, thegem" что делать? Как с народом тут делится, обмениваться. Я новенький

p.s. лицензии конечно не дам ))) thegem без лицензии не загрузить демо
Сейчас дам еще один вариант самый правильный с позиции кодинга. (при вызове стандартными средствами WP он выгребает все посты и там их рандомит ... это мягко говоря кушает время и память) код вызывает ID постов помещает их в массив и оттуда делает выборку всего 4 обращения... (о чем я писал в самом начале)
По поводу тем разместите их в ресурсах с пометкой официальные (касаемо не скачает демо это печально но не критично думаю, плюс если ручками подумать то можно поправить) размещение ресурсов принесет Вам монетки и не раз. Почитайте тут про монеты и ресурсы Ресурс | Клуб WordPress Монеты | Клуб WordPress Закрома | Клуб WordPress
 
Сверху