До последнего времени использовался плагин Insert PHP Code Snippet, на прошлой неделе было замечено, что плагин отвалился и не работает. Т.е. на страницы выводится тупо его шорткод и все. Поиск показал еще похожий плагин Code Snippet, но после его активации на всем вп сразу критическая ошибка.
Каким образом, с плагином или без, можно вставить php код в посты WP?
Постарайтесь как можно скорее отказаться от вставки PHP-кода непосредственно в посты, вместо этого пользуйтесь шорткодами и/или встроенными в Worpdress функциями add_filter и do_action
Дело в том, что определенная логика должна отработать внутри поста - поясню конкретно на моем примере.
Пост в моем случае - краткое описание вакансии, при этом сама вакансия, с полным описанием и контактной формой находится на другом сайте. На этот сайт на эту конкретную вакансию юзер переходит по ссылке, ссылка добавлена к посту как кастомное поле - form_link.
Поскольку постов с вакансиями может быть довольно много, редактор заполняет только краткое описание вакансии и url этой ссылки. Пост вакансии шаблонизирован, разбит на блоки, один из блоков как раз эта ссылка. Вот в коде этой ссылки и прописана логика, а именно в атрибут href вызывается значение поля -
....href="<?php the_field('form_link'); ?>"
Вот этот код и был добавлен в сниппет с помощью Insert PHP Code Snippet, и добавляется он именно шорткодом. Проблема в том, что с новыми версиями WP плагин этот работает корректно только если шорткод прописан в классическом редакторе чистым текстом, а в моем случае, где все вокруг шаблоны гутенберга - нужно извернуться, чтобы сработало правильно. Если я просто добавляю в шаблон абзац с шорткодом, или Reusable Block c шорткодом, php-код не отрабатывает, выводится текстом шорткод и все.
Я сейчас нашел временный выход, но понимаю, что надо конечно на уровне темы прописать, что то вроде такого:
Если встречается ссылка с таким то css-классом, взять значение ссылки из поля form_link и использовать его как атрибут href.
Но с php не очень, если мои рассуждения верны, подскажите как это правильно сделать?