Найдите процесс, чтобы проверить, присутствует ли шорткод в сообщении: что-то не так в моих попытках - PullRequest
0 голосов
/ 22 октября 2018

Моя цель - установить некоторые параметры обработки темы, которые зависят от наличия некоторых шорткодов (и их параметров).

Подробное назначение, причины необходимости в информации

Таким образом, пользователь может определить параметры темы в «странице» или «статье» (я встречаю это, потому что сайту нужны некоторые страницы и статьи в виде текста, отображаемого в одном столбце, например книги и боковой панели.в то время как другим, использующим мультимедиа, нужна полная ширина на ПК с несколькими панелями).

что не получается: Короткий код выполнен, но я не могу вернуться к теме, котораяэто было и получить параметры для выполнения темы.

Реализованная мной структура

  • шорткод определен в классе плагина

  • функция шорткода устанавливает некоторые значения в объект класса плагина

  • несколько открытых функций объекта, вызываемых темой, возвращают статус и параметры, сохраненные в памяти.объект

Что-то не так в этом процессе

Что-то не так, потому что при запуске "page.php"включенная функция, которая спрашивает объект, если функция шорткода была запущена, отвечает "не выполнено".

В то время как (после получения содержимого сообщения) можно проверить, что отображаемое сообщение имеет обработанный шорткод.

Далее, когда выполняется "боковая панель", тот же вопрос отвечает "true ".

Может быть

Может быть, моя концепция ошибочна, потому что обработка сообщения (особенно шорткоды) выполняется только тогда, когдасодержимое сообщения выводится WP-функцией "the_content ()" (позже и слишком поздно в page.php)?

Если это правда, я должен проанализировать содержание сообщения перед любымлечение.Кажется, ничего не сказано об этом (или не найдено) в Кодексе Wordpress.

Вопрос

У вас есть идеи?У меня есть некоторые для решения, но если причина, которую я представляю, является неправильной, я бы произвел что-то слишком сложное.

С уважением

Ужасно

1 Ответ

0 голосов
/ 26 октября 2018

Спасибо за вашу информацию.В течение короткого времени после публикации этой темы я разработал решение.

Я подтверждаю, что проблема в том, что когда вы пишете $ pt = $ post-> get_content ();

, вы получаетеполучить необработанный контент перед любой обработкой шорткода.

Именно когда вы пишете в свою тему -? php the_content ()? - шорткоды обрабатываются и результат буферизируется.

Затем япрочитайте мой $ pt и найдите запрошенный шорткод.Если я нахожу его, я анализирую, получаю параметры и выполняю.

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

Это означает, что нужно давать инструкции шаблону о том, как вести себя с текущим содержимым (с помощью содержимого страниц HTML,статьи или другие списки рассылки).

Тем не менее, это не всегда возможно для любого контента, потому что многие материалы вводятся с помощью коротких кодов, и вы не можете давать инструкции на втором уровне.Я говорю «в общем», потому что вы можете разработать шорткоды, которые будут использовать функцию обратного вызова, запущенную перед отправкой ob.Затем вы можете проанализировать ob и внести некоторые изменения.Это теоретически невозможный второй уровень.Управлять кодированием нелегко, но я использую этот способ для создания оглавлений (заголовков или других пользовательских тегов) для любого вывода WP.

С наилучшими пожеланиями

Trebly

...