Я создаю сценарий, который получает контент и мета сообщений WordPress для приложения, выполняя запросы непосредственно в базе данных, потому что это намного быстрее, чем включение функций wp. Однако проблема в том, что содержимое сообщения сохраняется в БД без форматирования. Я знаю, что могу получить это, используя

apply_filters('the_content', $content)

Но, как я уже сказал, мне бы хотелось избегать функций wp, потому что они очень медленные.

Есть ли способ "смоделировать" apply_filters вручную? Есть ли лучший (более быстрый) способ включить функцию wp, кроме

require('../wp-load.php');

Что кажется очень медленным?

0
Michael Darksepho Omizzolo 20 Май 2015 в 11:26

1 ответ

Лучший ответ

«Дешевый» метод заключался бы в том, чтобы включить файл wp-includes/formatting.php (и, возможно, другие) и запустить ваш код через требуемые функции фильтрации, такие как wpautop().

Однако это не гарантирует, что контент будет отформатирован как ваш блог WordPress - особенно потому, что он не будет применять модификации, сделанные плагинами. Кроме того, если в новых версиях WordPress вводятся новые или другие фильтры, ваш код не будет работать с ними без изменений.


Я бы действительно рекомендовал включить wp-load.php и работать с WP filter API.

Я не думаю, что это слишком «медленно» (как бы вы это ни определяли), но если производительность является проблемой, я бы порекомендовал пересмотреть вашу архитектуру.

Например, если вы хотите, чтобы веб-сайт отображал содержимое из вашей базы данных WordPress, не извлекайте и не отображайте содержимое при каждом запросе страницы. Вместо этого используйте решение для кеширования - либо одно из тех, что уже существует для WordPress, либо одно на уровне сервера (например, Varnish), либо вы даже можете реализовать свой собственный кеш, сохраняя предварительно обработанные страницы и доставляя их (частично) статически.

1
lxg 20 Май 2015 в 11:51
Включение всей загрузки wp занимает секунду на каждый запрос моего скрипта. Включение только formatting.php помогло, ответ страницы действительно быстрее. В любом случае, неплохо было бы реализовать предварительно обработанные страницы, я учту это.
 – 
Michael Darksepho Omizzolo
20 Май 2015 в 12:02
Спасибо за принятие / голосование. Кстати, если включение wp-load.php занимает это много времени, что-то не так. Возможно, в блоге установлены медленные плагины. В любом случае, я рад, что смог помочь.
 – 
lxg
20 Май 2015 в 12:05
Я не возражаю против этого, у веб-сайта много функций, и он становится немного медленным, но это не будет проблемой, потому что им воспользуются немногие. Важно то, что мобильное приложение, которое извлекает данные с веб-сайта, работает быстро, поскольку мы хотим, чтобы оно было простым и быстрым инструментом для доступа к этим данным. Чтобы было понятнее, это своего рода приложение для размещения объявлений, веб-сайт будет использоваться только для создания рекламы.
 – 
Michael Darksepho Omizzolo
20 Май 2015 в 12:15