evgraf38 29.01.2023 15:08

Как настроить генерацию автоматического оглавления для поста в WordPress?

Здравствуйте! Мне нужна помощь с настройкой генерации автоматического оглавления для поста в WordPress. Я создаю блог и хочу, чтобы у каждого поста автоматически генерировалось оглавление, которое бы отображало все заголовки в посте и позволяло бы быстро переходить к нужному разделу. Пожалуйста, подскажите, каким образом можно настроить генерацию автоматического оглавления для поста в WordPress? Я использую следующий код для генерации оглавления:

function generate_toc($content) {
    $pattern = '/(.*?)/si';
    preg_match_all($pattern, $content, $matches, PREG_SET_ORDER);

    $toc = '';

    $content = '
' . $toc . '
' . $content; return $content; } add_filter('the_content', 'generate_toc');
Однако, этот код не работает должным образом. Оглавление не отображается, а просто выводится в виде текста над содержимым поста. Буду благодарен за помощь и подсказки, как исправить данную проблему и настроить генерацию автоматического оглавления для поста в WordPress. Заранее спасибо!

Ответы:

PhilTech25 29.01.2023 15:22
Проблема, с которой ты столкнулся, связана с тем, что фильтр "the_content" не принимает параметр, содержащий сам контент поста. Вместо этого, фильтр передает только переменную $content, которая содержит весь HTML-код содержимого поста. Для того чтобы исправить данную проблему и настроить генерацию автоматического оглавления для поста в WordPress, тебе нужно немного изменить код. Вот новая версия функции generate_toc():

function generate_toc($content) {
    $pattern = '/]*>(.*?)/i';
    preg_match_all($pattern, $content, $matches, PREG_SET_ORDER);

    $toc = '';

    $content = '
' . $toc . '
' . $content; return $content; } add_filter('the_content', 'generate_toc');
Этот код использует регулярное выражение для поиска всех HTML-тегов заголовков (h1, h2, h3 и так далее) и сохраняет их в массив $matches. Затем, он создает оглавление, состоящее из ссылок на каждый заголовок, используя функцию sanitize_title() для генерации якорных ссылок. Наконец, оглавление вставляется перед содержимым поста с помощью HTML-тегов
. После внесения этих изменений, генерация автоматического оглавления должна работать должным образом на твоем сайте WordPress. Надеюсь, этот ответ поможет тебе решить проблему! Если у тебя есть еще вопросы, не стесняйся задавать их. Удачи!

Добавить ответ