Как еще можно добавить PHP код в посты WordPress?
До последнего времени использовался плагин 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 не очень, если мои рассуждения верны, подскажите как это правильно сделать?
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
PHP-код прямо в посты WordPress лучше не вставлять. Это небезопасно, плохо переносится между редакторами и часто ломается после обновлений. Нормальная схема: код живёт в теме, дочерней теме, mu-plugin или маленьком кастомном плагине, а в посте используется shortcode или блок.
Для вашего случая с ACF-полем
form_linkпроще всего сделать shortcode, который выводит кнопку со ссылкой из текущей записи:add_shortcode('vacancy_form_link', function () { $url = get_field('form_link', get_the_ID()); if (! $url) { return ''; } return sprintf( '<a class="vacancy-form-link" href="%s" target="_blank" rel="noopener">%s</a>', esc_url($url), esc_html__('Откликнуться', 'textdomain') ); });
После этого в Gutenberg вставляете обычный блок «Шорткод»:
[vacancy_form_link]
Если нужно менять
hrefу уже существующей ссылки по CSS-классу, это можно сделать JavaScript-ом, но лучше так не делать: ссылка должна быть правильной уже в HTML. Иначе хуже SEO, доступность и работа без JS.Куда положить код: для быстрого решения — в
functions.phpдочерней темы; для более правильного — в небольшой mu-plugin, если логика вакансий не должна зависеть от темы. Плагины, которые исполняют PHP из контента, лучше убрать: они расширяют поверхность атаки и часто конфликтуют с блочным редактором.