Вывод статей из определенной категории при помощи WP_Query.

Dmitriy_2014
На сайте с 01.07.2014
Offline
344
879

Всем привет!

Если мне нужно сделать несколько разных выводов списка заголовков статей из разных категорий я использую такой вот скрипт:


<ul>
<?php $news = new WP_Query('category_name=news&showposts=5'); ?>
<?php while ($news -> have_posts()) : $news -> the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>" rel="bookmark"> <?php the_title(); ?></a>
</li>
<?php endwhile; ?>
</ul>

Вопрос в том что нужно ли каждый раз менять название переменной $news или можно использовать одно и тоже.

И нужно ли применять функцию wp_reset_query();

<?php wp_reset_query(); ?>

Заранее всем спасибо за ответы!

Я_Рожден_В_СССР
На сайте с 21.08.2010
Offline
75
#1

А почему не обойтись одним запросом, собрав статьи из всех необходимых рубрик сразу, перечислив все рубрики в category_name через запятую?

<?php $news = new WP_Query('category_name=news, sport, ...'); ?>
Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#2

Я_Рожден_В_СССР,

Записи выводятся в разных местах, где по 5 где по 10 шт., и используется несколько однотипных конструкций с циклом. Я поэтому и узнать хотел про переменную, у меня несколько блоков получается и можно сделать разные переменные, а можно одну и туже использовать и вроде работает что так, что так, только непонятно как правильно. (в моем сумасшедшем представлении т.к. я не профессионал, я понимаю это так – в первом случае в переменную попадают данные-идет выборка-печатается результат… потом эту же переменную перезаписывают и все по кругу и так в пяти местах)

S3
На сайте с 29.03.2012
Offline
364
#3

Dmitriy_2014, Интерпретатор же))) Не плюсы)

Если вы код пихаете вперемешку в хтмл - можно и одну переменную)

Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#4
Sly32:
Dmitriy_2014, Интерпретатор же))) Не плюсы)
Если вы код пихаете вперемешку в хтмл - можно и одну переменную)

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

S3
На сайте с 29.03.2012
Offline
364
#5

Dmitriy_2014, php не так грамотно работает с памятью, как python, но в данном случае проблем нет - все законно))) Зачем хранить то что уже не нужно?

Создается переменная, генерится код страницы, потом она уничтожается, на ее место пишется новая - это если очень приблизительно.

Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#6

Я тут где-то недавно услышал, что где-то в недрах, глубоко, глубоко в самом центре ядра WordPress имеется кеширование некоторых объектов и сущностей, и если это так, то лучше для каждого нового вывода списка статей через new WP_Query использовать переменные с разным именем чтобы она сохранялась и кэшировалась, а не перезатирала старую переменную.

Это бред или это вообще без разницы и не на что не влияет.

Dmitriy_2014
На сайте с 01.07.2014
Offline
344
#7

Так или иначе, переменной объекта экземпляра класса основанной на new WP_Query надо изменять имя переменной, и обязательно делать сброс в конце цикла в этом случае можно использовать функцию wp_reset_postdata(); вместо wp_reset_query();.

S3
На сайте с 29.03.2012
Offline
364
#8

Так глубоко в недра не лез) Но о каком кэшировании может быть речь, если вы используете wp_reset_postdata() ?

По итогу ни один плагин кэширования не понравлся, проще поставить memcached и самому управлять кэшированием

Может гуру вордпресса меня поправят?

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
Sly32:
Но о каком кэшировании может быть речь,

Да.. слышал звон же..

Но будет не бесполезно почитать безотносительно к топику:

https://wpmag.ru/2013/keshirovaniye-wordpress/

https://wpmag.ru/2014/keshirovanie-obektov-wordpress/

https://wpmag.ru/2015/transient-cache-wordpress/

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий