Как добавить возможность автоматической генерации таблицы контента для каждой страницы WordPress?
function generate_table_of_contents() {
// Код для генерации таблицы контента
}
add_action('the_content', 'generate_table_of_contents');
Спасибо за ваше внимание! Буду благодарна за любую помощь или совет. Ответы:
- попробуйте использовать плагин для WordPress, который специально предназначен для создания таблицы контента на страницах. Это может значительно упростить процесс и обеспечить более гибкую настройку.
Можете использовать плагин, который автоматически создаст таблицу контента для каждой страницы на основе заголовков разделов и подразделов.
- попробуйте использовать плагин "Table of Contents Plus". Он позволяет автоматически создавать таблицу контента на основе заголовков страницы и создавать ссылки на разделы.
Чтобы реализовать автоматическую генерацию таблицы контента для каждой страницы в WordPress, вы можете использовать следующий код:
function generate_table_of_contents($content) {
if (is_singular('page')) { // Генерируем таблицу контента только для страниц
// Получаем заголовки разделов и подразделов на странице
preg_match_all('/(.*?)/i', $content, $matches, PREG_SET_ORDER);
if (!empty($matches)) {
$table_of_contents = ''; // Начинаем таблицу контента
foreach ($matches as $match) {
$heading_level = intval($match[1]); // Уровень заголовка
$heading_text = strip_tags($match[2]); // Текст заголовка
// Создаем якорь для ссылки
$anchor = sanitize_title($heading_text);
// Создаем ссылку на заголовок
$link = '' . $heading_text . '';
// Добавляем пункт в таблицу контента
$table_of_contents .= '- ' . $link . '
';
// Заменяем заголовок на заголовок с якорем
$content = str_replace($match[0], '' . $heading_text . '', $content);
}
$table_of_contents .= '
'; // Заканчиваем таблицу контента
// Вставляем таблицу контента перед контентом страницы
$content = $table_of_contents . $content;
}
}
return $content;
}
add_filter('the_content', 'generate_table_of_contents');
Этот код можно добавить в файл functions.php вашей темы или использовать плагин, который позволяет вставлять пользовательский код.
Как работает этот код:
1. Мы определяем функцию `generate_table_of_contents`, которая принимает контент страницы в качестве аргумента.
2. Проверяем, является ли текущая страница страницей (`is_singular('page')`).
3. Используя регулярное выражение (`preg_match_all`), мы получаем все заголовки разделов и подразделов на странице.
4. Если заголовки найдены, мы создаем таблицу контента и заменяем заголовки на заголовки с якорями.
5. Наконец, мы возвращаем обновленный контент страницы.
Теперь, при просмотре каждой страницы, функция `generate_table_of_contents` будет вызываться, а таблица контента будет автоматически добавляться перед контентом страницы.
Я надеюсь, что это поможет вам решить вашу проблему с автоматической генерацией таблицы контента на вашем сайте WordPress. Если у вас есть еще вопросы, пожалуйста, не стесняйтесь задавать.