Как быстро сделать содержание в статье на WordPress

Здравствуйте, читатели нашего сайта Cash-Space, посвященного получению дохода в интернете. В этой статье, на улице сегодня дождливая погода, пасмурно и настроение не совсем хорошее. Сижу вот у себя в общежитии, скучновато! Да и думаю, а почему бы не написать статью на свой блог, надо же реабилитироваться за отпуск. И так начнем наш обзор.
И вот в продолжении рубрики «Советы WordPress» хочу рассказать Вам, как сделать содержание статьи в полуавтоматическом режиме. Как это? Да очень просто, дочитайте статью до конца, и Вы сможете реализовать это без проблем!
На днях блуждая по сайтам в интернете, я наткнулся на сайт, где к каждой статье вначале было краткое содержание из ссылок. Нажав на одну из этих ссылок, меня перекинуло на определенный раздел в этой статье. Мне такая фишка понравилась, и я решил реализовать ее на своем сайте.

Как сделать это с чистого листа я не знал, поэтому обратился за помощью к всезнающему Гуглу. Полазив по нескольким блогам, я нашел нужный мне способ. Я его немножко модифицировал и реализовал на своем туристическом портале про Крым.
Собственно вот так теперь выглядит содержание в каждой статье моего сайта. Теперь я расскажу, как это сделать на Вашем сайте (блоге), который сделан на популярном движке WordPress.
Для того, чтобы реализовать содержание в каждой статье в полуавтоматическом режиме, нам сперва нужно добавить специальный код в файл functions.php, который находится в папке с темой для WordPress.
Открываем данный файл в текстовом редакторе и в конце до закрывающегося тега «?>» копируем и вставляем следующий код:
function make_contents($content){
if( !is_singular() || strpos($content, '[содержание')===false )
return $content;
$patt = '\[содержание\s*([^\]]*)\]';
preg_match("@{$patt}(.*)@s", $content, $m);
$hds = $m[1] ? trim($m[1]) : 'h2';
$hds = explode(' ', $hds);
$hds = array_map('trim', $hds);
$h = implode('|', $hds);
@preg_match_all('@<(?:'.$h.')[^>]*>(.*?)</('.$h.')>@is', $m[2], $match);
if(!$match)
return $content;
// заменяем заголовки и строим содержание
$g=0;
foreach( $match[0] as $ch ){
$t = &$match[2];
$anchor = $t[$g].'_'.$g;
$new_ch = preg_replace("@>(.+?)<@", " id='$anchor'>\\1 <", $ch, 1);
$content = str_replace($ch, $new_ch, $content);
$out .= '<li><a href="#'. $anchor .'">'. strip_tags($match[1][$g]) ."</a></li>\n";
if( $hds[1] && $t[$g]!=$t[$g+1] && isset($t[$g+1]) ){
}
$g++;
}
$out = '<'.$hds[0].' id="a_menu">Содержание:</'.$hds[0].'><ul>'. $out .'</ul>';
$content = preg_replace("@{$patt}@", $out, $content, 1);
return $content;
}
Для того, чтобы добавить содержание на страницу Вашего сайта, нужно в удобном для Вас месте в статье вписать такой шот код [содержание h2 h3] (вставлять вместе с квадратными скобками). Таким образом, все подзаголовки, стоящие в тегах h2 и h3 будут вписаны в содержание статьи, и у Вас получится то, что у меня на туристическом сайте.
Маленькое замечание. Для того, чтобы содержание работало, в статьях Вашего сайта должны присутствовать подзаголовки h2-h6, иначе просто неоткуда будет делать содержание статьи. Если в статьях присутствуют и другие заголовки, кроме h2 и h3, например: h4,h5,h6, то и их можно поместить в содержание, дописав через пробел в упомянутом выше шот коде.
Пример такого содержания Вы можете видеть в любой из сайте или блоге.

На этой скромной ноте я завершаю свою статью. В следующих статьях я расскажу Вам. Какими еще способами можно заработать. Так что подписывайтесь на мой блог и наш канал на Яндекс.Дзен, также на мой Телеграмм канал, ну и за одно поставьте лайк (палец вверх) за труды. Если у Вас возникают какие-то вопросы. Или Вы хотите что-нибудь добавить, напишите об этом в комментариях. Я с радостью отвечу на все Ваши комментарии! 

Комментариев нет

Технологии Blogger.