#php #wordpress
#php #wordpress
Вопрос:
Я использую тему WordPress Flatsome, которая использует скобки [] в визуальном редакторе для вывода содержимого. Я хотел бы вставить функцию в тему functions.php который отключил бы вывод содержимого и отображал бы шорткоды только в виде необработанного текста заключил бы его в предварительные теги, точно так же, как это:
В настоящее время я использую эту функцию для достижения результата, но это портит поток другого контента:
function fv_render_raw_content($atts, $content = null)
{
echo '<pre>' . htmlspecialchars($content) . '</pre>';
}
add_shortcode('render_raw_content', 'fv_render_raw_content');
Это приводит к тому, что заголовки внутри страницы (не обернутые функцией) меняют порядок без причины:
Я был бы очень признателен за любые идеи о том, что изменить, чтобы другой контент отображался в соответствии с визуальным редактором WordPress и не зависел от функции. Спасибо!
Комментарии:
1. Можете ли вы попробовать и посмотреть, что произойдет, если вы используете
<code>
вместо<pre>
?2. Пробовал использовать
<code>
, не сработало. Заголовок все еще внизу : (3. Трудно угадать решение, не видя ваш css и html, но вы можете попробовать это в своем css
pre {display: inline}
4. Конечно, никаких проблем. Вот ссылка на страницу: ссылка
5. Я проверил вашу страницу, и заголовок h2 на самом деле находится под тегом pre, который заключен в тег span. Итак, это ожидаемый результат сгенерированного html.
Ответ №1:
В вашем шорткоде выводимый контент выполняется с помощью эха, что, хотя и нормально, однако для сохранения приоритета стека вызовов в теме я бы рекомендовал возвращать контент внутри вашего шорткода, а не повторять его на вашей странице.
Вы также можете подумать о том, чтобы обернуть вашу переменную $content вокруг какого-либо метода очистки содержимого, такого как sanitize_text_field, чтобы убедиться, что на страницу не добавляется дополнительная разметка с того места, где используется короткий код, и что пробелы также удаляются.
https://developer.wordpress.org/reference/functions/sanitize_text_field/
Еще одна вещь, которую вы можете сделать, это переработать свой короткий код таким образом, чтобы у вас был атрибут, который является текстом заголовка короткого кода. Затем это может быть отправлено в качестве параметра вашей функции шорткода, и если вы повторяете содержимое на странице, вы сначала должны сделать это, выведя заголовок, за которым следует содержимое, которое переносит эти <pre>
теги.
Комментарии:
1. Спасибо за ваш совет! Однако я ничего не знаю о php, функция была создана кем-то другим. Не могли бы вы показать мне, как будет выглядеть скорректированная функция с возвратом вместо echo sanitize? Я не знаю, что заменить. Большое вам спасибо