Intereting Posts
Отображение кнопки дома в указанном меню Плагин TN3 не работает под IIS / WebMatrix 2 пользовательских типа сообщений в 1 пользовательской таксономии Удаление кнопки удаления навсегда при загрузке файлов posts_nav_link (); выбирает index.php вместо category.php в качестве шаблона Использование ob_start () в плагине Условные обозначения в WP_Query может потребоваться «themefolder / includes / widgets.php» в «themefolder / functions.php», но widgets.php не запускается Почему я не могу добавить этот фид в RSS-виджет? Двадцать пятнадцать – Страница.php не называется – всегда 404s Программно отформатировать содержимое страницы со страницы шаблона Определить новые возможности пользователя для пользовательских типов сообщений? Чтобы получать текущие данные страницы с помощью пользовательских перехватов при загрузке страницы Параметры настройки для многостраничного сайта WordPress из плагина Правильный способ запуска wp_query изнутри плагина

Как организовать и кешировать дополнительные данные, связанные с условиями?

Я обновляю мой плагин, и мне сложно определить «лучший способ» построить конкретную функциональность. Плагин позволяет пользователям связывать изображения из своей медиабиблиотеки с любым термином любой таксономии. В настоящее время я работаю над созданием функций, которые пользователи могут добавлять в свои темы и плагины, чтобы получить данные, хранящиеся в плагине. Код, который я до сих пор можно посмотреть здесь: https://github.com/mfields/Taxonomy-Images/blob/master/public-filters.php

Функциональность, представленная в этом файле, позволяет пользователям получить изображение термина, которое в настоящее время запрашивается (для просмотра таксономического архива), а другая функция в основном представляет собой оболочку для основной функции get_terms() которая возвращает все члены данной таксономии при добавлении изображения id каждому термину. Я хотел бы добавить третью функцию в файл перед выпуском. Это будет оберткой для get_the_terms() и вернет все термины, связанные с глобальным объектом post с изображениями.

Я думал о моделировании функции get_the_terms() после функции get_terms() которая построила кэширование для файлов изображений. Но я немного боюсь, что произойдет, когда эта функция будет использоваться в цикле в любом шаблоне архива.

В основном рабочий процесс будет выглядеть примерно так:

  1. Получите все ассоциации image / term (0 запросов).
  2. Получить термины, связанные с глобальной почтой: get_the_terms() (0 запросов).
  3. Запрос для всех изображений, связанных с условиями (3 запроса). Это делается путем создания списка всех идентификаторов изображения и передачи их в get_posts() через параметр include .

IMHO это прекрасно делать в одиночных представлениях (single.php, page.php и т. Д.), Но что произойдет, если пользователь будет использовать эту функцию в цикле в виде архива? Вам нужно будет умножить 3 запроса (созданных get_posts() ) на значение параметра get_posts() -per-page (10 в установке WordPress по умолчанию). Итак, теперь у нас 30 запросов. Он становится довольно уродливым! Особенно, если пользователям нужны изображения из более чем одной таксономии. 2 таксономии за пост добавили бы 60 к тому, что нужно сделать WordPress!

В принципе, есть несколько путей для продвижения вперед, и я хотел бы знать, что вы будете делать в такой ситуации.

  1. Не создавайте функциональность вообще.

  2. Создайте функцию и научите пользователей, чтобы плагин кеширования был установлен, если они используют get_the_terms () в представлениях архива.

  3. Создайте функцию + создайте еще одну функцию, которая будет кэшировать все изображения до загрузки шаблона архива. Этот процесс будет включать в себя следующее: после создания массива $posts (но до того, как шаблон был загружен), зациклируйте все записи в массиве, вызывающие get_the_terms () каждую итерацию для каждой публичной таксономии. Результат всех объектов term будет храниться в новом массиве. Затем я мог бы определить, какие изображения связаны с каждым термином каждой таксономии и передать идентификаторы изображений в get_posts() за один снимок. Это позволит кэшировать всю информацию об изображении для использования в шаблоне в 3 запросах вместо 30, 60 или 90.

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

Пожалуйста, дайте мне знать ваши мысли об этом!

Solutions Collecting From Web of "Как организовать и кешировать дополнительные данные, связанные с условиями?"

Я бы сказал, что ваш третий вариант – это путь.

Кстати, почему вы применили свой собственный статический кеш в taxonomy_image_plugin_get_associations() вместо того, чтобы использовать для этого встроенный API WP_Cache ? Есть ли причина, по которой wp_cache_get не будет работать здесь? Похоже, что использование кэша объектов WP оптимизировалось бы лучше, если бы у людей были активированы кеширующие плагины.