Aza Broflovski, ок, понял. Вам нужно оставить как есть главный цикл и только сохранить ID записей в нем. Далее выполнить вторичный цикл, передав в него на исключение ID записей из первого. Или наоборот - сначала вторичный цикл, потом главный. Сейча срочная задачка от клиента есть, допилю - обновлю ответ и добавлю код циклов.
1. Что такое strany-i-mesta?
2. Что такое europa?
3. У вас там что, кастомные таксономии?
4. А почему тогда в вопросе вы пишете /category/slug1+slug2 и вообще про категории
Aza Broflovski, простой поиск не помог, потому что вы не смогли сформулировать четко задачу. По этой же причине я не смог вам дать верный ответ. И да, ваш ответ условно-верный, потому что он на первый взгляд решает задачу, но имеет вагон проблем бонусом и использовать такое решение нельзя.
Aza Broflovski, я видел код, поэтому ответственно заявляю - это говнокод с багами. query_posts как минимум прямо со старта поломает вам пагинацию. Далее, она же боком вылезет в виджетах. И в плагинах, которые будут надеяться на main query. И еще в многих местах - чем сложнее будет сайт, тем больше багов будет лезть из всех щелей.
Если вдруг кто увидит этот ответ в будущем - не вздумайте его использовать. Это адский говнокод, который имеет непредвиденные последствия из-за использования функции query_posts, которую использовать категорически нельзя.
Вы реально не понимаете что у вас переспрашивают? Как можно использовать что-то повторно, но чтобы оно уже не было тем, что использовалось первый раз? Ответ - никак.
Вы же явно пытаетесь решить какую-то конкретную задачу. Например, выводится у вас 5 последних постов. Потом вы хотите сделать еще один цикл, но уже не последних, а популярных. И чтоб во втором списке (популярных) постов не было ни одного поста из первого списка (последних). Вот это - конкретная задача, которую можно решить, пример из жизни с достаточным количеством деталей, которые помогают людям понять, что же вам надо.
Изучите код функции и примеры на странице документации. Можно. Но Walker_Nav_Menu - более гибкий и мощный инструмент, изначально созданный как раз для получения полного контроля над выводом.
zorca, Да нет, статья не устарела и в целом Костя весьма детально описывает тему (а он в ней, кстати, хорошо разбирается). Разве что не совсем очевидно прописана связь с внешними кешами. WP "умеет в кеш" из коробки, но не содержит по умолчанию ни одного готового интерфейса для какого-то конкретного бекенда. Бекенды решаются путем добавления drop-in файла object-cache.php в корень папки wp-content. Оттуда он грузится на достаточно раннем этапе и вся подсистема кеширования будет с ним работать, сохраняя данные между страницами. Если же drop-in отсутствует, то подсистема кеширования работает, но данные кешируются только на runtime, без сохранения во внешних источниках. Именно поэтому была создана дополнительная подсистема, которая называется Transients API. Как она работает - если внешний кеш доступен, то будет использоваться он, transients получатся просто оберткой для wp_cache_*. Если же внешнего кеша нет, то данные будут записываться в базу (таблица wp_options), имитируя кеш. В очень многих случаях это все равно будет сильно быстрее, чем без кеша вообще. Поэтому рекоммендуется пользоваться Transients API, а непосредственно кешами - только если понимаешь что делаешь.
Александр Филиппенко, да, макось память по-другому использует, плюс родные аппы вообще оптимизированы по самое немогу. Очень много сторонних приложений тоже хорошо заточены. Но есть и неистовые пожиратели памяти, как и везде. Впрочем, на macOS это редко приводит к проблемам.
Алексей, Создайте, упомяните в нем этот (ссылкой). Задача Тостера - не только решать ваши конкретные сиюминутные задачи, но и формировать базу знаний для будущих поколений. Ваша задачка весьма интересна. И хоть она не является сложной для того, кто понимает архитектуру WP, встречаются подобные запросы достаточно часто. Уверен, решение пригодится в будущем не только вам.
Алексей, ну тут вам уже доки читать надо. Или отдельный вопрос задавайте, мы сильно отошли от темы данного вопроса. Но ответить смогу только завтра, сегодня уже ухожу оффлайн.
- зарегистрировать query_var 'filter-by-tag' (например), и дописывать его и нужное значение к урлу категории (category permalink) с помощью add_query_arg. Получится что URL будет у вас /category/vienna/?filter-by-tag=bike. Далее в хуке pre_get_posts изолируете главный WP_Query страница архива категории, проверяете там get_query_var, если значение не пустое - модифицируете основной запрос.
- регистрируете переменную как выше, а также новое правило url_rewrite, которое будет понимать URL вида /category/CATEGORY_NAME/tag/TAG_NAME, и модифицируете запрос под этот URL.
Сами ссылки собираете вручную, естественно. Или пишете функцию-обертку, которая принимает нужные данные (категори, тег) и возвращает собранный URL.
Дык если подключить класс object_cache, то wp_cache_set / wp_cache_get через него и будет писать в редиску или memcached. ТС все правильно делает, вот только забыл подсунуть вордпрессу класс для внешнего кеша.