onlinemoneta.ru
Hostenko — лучший WordPress-хостинг SEO sprint - Всё для максимальной раскрутки!

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

Как быстро сделать содержание в статье на WordPressПриветствую Вас, уважаемые читатели блога OnlineMoneta.ru. На улице сегодня дождливая погода, пасмурно и настроение не совсем хорошее. Сижу вот у себя в общежитии, скучновато! Да и думаю, а почему бы не написать статью на свой блог, надо же реабилитироваться за отпуск. И вот в продолжении рубрики «Уроки 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, то и их можно поместить в содержание, дописав через пробел в упомянутом выше шот коде.

Пример такого содержания Вы можете видеть в любой из статей на моем туристическом портале про Крым.

На этом у меня все, надеюсь, сегодняшний урок был для Вас полезным. Подписывайтесь на обновления моего блога и до скорых встреч!

С уважением Александр Красильный!

На десерт сегодня видео о новой игрушке под названием кинетический песок!

Интересное в моем блоге:

Понравилась статья? Поделись с друзьями!


24 комментария

  1. Родион пишет:

    Как раз собираюсь начать создавать сайты на ворд пресс, думаю будет полезной информацией. Александр а ты не занимаешься разработкой шаблонов?

    • Если ты имеешь ввиду создания шаблона с нуля, то нет. Я беру готовый понравившийся мне паблик шаблон и кардинально его переделываю, но лишь только для себя. Мне как то предлагали делать сайты на заказ, но мне почему-то не понравилась эта затея. Пассивный заработок на рекламе меня привлекает гораздо больше.

  2. Возникло подозрение, что возможна тошнота на некоторых блогах. У меня, например. Я и так последнее время убираю повторы. Или текст такого содержания не плюсуется к тексту статьи?

    • Здравствуйте, если я Вас правильно понял Вы говорите о повторяемости слов в статье. Текст содержания плюсуется к тексту статьи, так как является ее неотъемлемой частью. Но многие топовые блоггеры рекомендуют делать содержание статьи, так как это очень нравится поисковым системам, да и самим посетителям.

      Сайт можно сравнить с обычной бумажной книгой. В книге есть заголовки и они по факту тоже повторяются. Я где-то читал, да и сам придерживаюсь такого мнения, идеальный сайт должен напоминать хорошую книгу.

  3. Интересная фишка, если будут объемные статьи обязательно воспользуюсь и сделаю такое содержание

  4. Юрий пишет:

    Интересный подход, раньше им никогда не пользовался. Нужно обязательно взять на вооружение эту тему.

  5. sherand пишет:

    Здравствуйте.

    У меня этот код не заработал(((. Тестировал его на локалхосте, может в этом проблема, хотя все остальное работает отлично.

    При изменении function.php вылетает такая ошибка:

    Parse error: syntax error, unexpected T_STRING in E:\xampp\htdocs\адрес-до-файла\functions.php on line 830

    Строка 828-830:

    function make_contents ($content){

     if ( !is_singular () || strpos ($content, '[содержание')===false )

     return $content;

    Подскажите, пожалуйста, в чем проблема и как ее решить? Заранее спасибо

  6. Я выслал Вам на почту текстовый файл с кодом, который стоит у меня на одном из сайтов. Он работает, так что если и с ним не получится, значит у Вас какие-то проблемы с темой WordPress.

  7. sherand пишет:

    Спасибо. Получил. Стало еще интереснее)))

    Ошибка исчезла и статья открывается, но шорткод не срабатывает.

    Просто вижу на транице текст [содержание h2 h3] . Заголовки h2 и h3 в тексте присутствуют

  8. sherand пишет:

    Жирным? Ну вот такие варианты ситуацию не изменили:

    [содержание h2 h3]

    [содержание h2 h3]

    просто шорткод стал жирным))

  9. sherand пишет:

    тьфу режет теги использовал тег b за скобками и даже внутри них

  10. sherand пишет:

    Извините, что Вас так мучаю) Я не специально) Не помог и стронг(

  11. sherand пишет:

    Возможно. Жаль, даже не знаю куда рыть((( В любом случае спасибо

  12. Руслан пишет:

    Интересно. Раньше никогда ни где этого не видел. Нужно будет взять это себе на заметку и воспользоваться этим у себя на блоге.

  13. Виталий пишет:

    А можно как нибудь сделать так, чтобы после клика по ссылке был плавный переход к нужному якорю?

  14. Артём пишет:

    А что нужно в коде изменить, чтобы слово «Содержание» не было окружено тегами h2?

  15. dezm021 пишет:

    код не рабочий — выдает ошибку в functions.php,

    для какой версии WP подходит данный код? возможно проблема в версии движка

Оставить комментарий

Почта (не публикуется) Обязательные поля помечены *