nextpage, URL-ы страниц, TITLE-ы и SEO

Директива WP nextpage мне понравилась.

Но имеется такой нюанс: в то время как каждая из получающихся более мелких страниц имеет свой вполне удобоваримый URL (что есть хорошо), все они имеют одно и то же содержимое элемента TITLE (что есть не очень хорошо с точки зрения SEO).

Вопрос: имеются ли готовые функции или плагин(ы) для извлечения из текста каждой маленькой страницы, например, содержимого ее первого определенного элемента (допустим H2) для его последующего использования в качестве содержимого TITLE? Или надо писать свою процедуру? (будь WP на Perl, наверное и не спрашивал бы 😉

Спасибо.

Я не видела. Если будете писать, я в очередь встану за таким плагином/хаком 🙂

От же ж мне эти SEOнисты! Нет бы о людЯх думать… 😀

Что, действительно нужна такая фиговина?

А то не нужна. Сами посудите – ведь разные страницы с одинаковыми заголовками – нонсенс.
Уже изучаю исходники.

Наперегонки будем писать? 🙂

Пробуем http://www.portal.kharkov.ua/soft/paging_title.zip
В титлу идут первые 10 слов страницы.

Выражаю свое восхищение знанием объекта исследований 😉 Только вернулся с гулек с собакевичем и настраивался посвятить пару часов только изучению внутренностей ВП и тонкостей PHP, а тут…

Работает, однако 😉 Coool…

Но ведь прикрутить регулярное выражение, парсящее текст на предмет H2 (возможны опции – H3, etc.), выкинуть знаки препинания (опция – да-нет), stop-words (список) — должно быть не очень трудно?

Дык, вперед! Мне не интересно 🙂 и по большому счету не нужно. Большие тексты я предпочитаю бить автоматом (первый мой плагин к WP), а там ни о каких h2 речь не идет – где поймает конец абзаца, там и рубит.

ОК, хорошо. Смотрю, тут и синтаксис рег.выражений похож и даже очень мощные функции с ними имеются.

Еще раз огромный сенкс (в основном за практическую демонстрацию простоты устройства плагина в целом 😉

Да, у php регэкспы не хуже перловых. Будете писать, обратите внимание на модификатор u, без него php utf-8 не понимает.

хм, а кто мешает воспользоваться тем же SEO Title Tag? там можно назначать титлы всему, что только можно в WP, включая произвольные урлы. первые 10 слов страницы в титле это конечно хорошо, но гложат меня сомнения, что там всегда будет нормальный текст.

Flector, Вы не вникли, если пост разбить на неск. страниц, то как не верти SEO Title Tag, а пост-то один и заголовок тоже один — общий на все страницы поста.
Счас буду пробовать плагин уважаемого Ю.Б. 🙂

Flector, Вы не вникли, если пост разбить на неск. страниц, то как не верти SEO Title Tag, а пост-то один и заголовок тоже один — общий на все страницы поста.
Счас буду пробовать плагин уважаемого Ю.Б. :)

почему не вник? если урлы получаются разные при разбитии, то самое оно. разве не так?

Мало SEOнистам разных урлов и разного контента, они еще и титлы разные хотят. Хорошо хоть кейворды их пока устраивают. 😀

только что проверил у себя на блоге – при разбитии на страницы в урлы добавляется "/2" и тд. и для каждой такой страницы можно прописать отдельный титл, причем не малосвязный набор первых 10 слов, а вполне осмысленный и привлекательный не только для поисковика.

Мало SEOнистам разных урлов и разного контента, они еще и титлы разные хотят. Хорошо хоть кейворды их пока устраивают. :D

просто кейворды сейчас не играют ни малейшей роли для поисковиков, они их игнорируют )) а вообще плагинов выставляющих кейворды из меток поста много.

Flector, расскажите подробнее, где именно можно настроить заголовки для поста, разбитого на неск. страниц?
вводимые урлы и заголовки для них (вкладка URLs) у меня лично не работают для задания тайтлов 2,3 и т.д. страницам поста.
wp 2.2.3 + SEO Title Tag 2.0beta8
а у Вас точно работают? Покажите пример

Эх, вынужден извиниться. Я решил, что раз разбитие страниц меняет урл поста, то каждой странице поста можно присвоить свой титл. Ан нет, SEO Title Tag вообще игнорирует любой урл, если он совпадает со страницей или постом. Поэтому указать свой титл урлу, который уже записан как страница или пост не получается. Еще раз прошу прощения.

Функцию изменил (пока только под свои насущные потребности) вот так:

_function paging_title($title) {
global $post, $page;
if ($page > 1) {
$pages = preg_split(‘/<!–nextpage–>/’,$post->post_content,$page+1);// NB – убрал модификатор /i , поскольку сам пишу только в нижнем регистре, а /i обычно усложняет алгоритм поиска совпадения и, как следствие, поиск требует больше времени (эти алгоритмы, наверное, одинаковы в Perl, PHP, др. языках)
if(preg_match(‘/<h2>([^<]+)<\/h2>/’, $pages[$page-1], $titles)) {//h2 можно заменить на что-то иное, если надо
return($titles[0]); // возврат контента первого в тексте субстраницы h2
}
else {
return($title);// откат к первоначальному титулу, если страница не содержит никаких h2
}
}
return $title;
}

еще раз – спасибо за помощь. Позже надо подумать над всем остальным.

Ой, мне тоже как раз надо было из какого-либо заголовка драть тайтл для 2,3,… страниц!

Я для себя чуть изменил: return($titles[0].’ :: ‘.$title);

И преемственность есть, и гл.ключевые слова сохраняются. Одно "но" -надо продумывать текст заголовков, чтобы не было чересчур много символов.

Раз уж встретился человек, способный и сформулировать задачу, и решить ее, подкидываю еще идею. 🙂 Парсить все страницы на предмет заголовка (не такая уж большая нагрузка на сервер) и полученный массив отдавать в виде оглавления. У Джумлы такая фишка есть. Для структурированного документа это логичнее, чем стр. 1, 2, 3.

(Я бы реализовывал через глобальную переменную, декларируемую в плагине на верхнем уровне.)

Таперича надо избавиться от h1 по умолчанию, переименовать бывшие целевые h2 в h1, и жизнь станет еще прекраснее 😉

Жаль, в nextpage нельзя добавить экстра-текст, как в more. Или можно? 😉

Да, это нормальная идея. Я собирался следующим номером программы дублировать 1-2-3.. менюшку в начало субстаниц и заголовки помещать в тайтлы ссылок. То есть, примерно похоже. У Вас нагляднее (и более SEOнистки ;), у меня – чуть экономнее по занимаемому месту.

Жаль, в nextpage нельзя добавить экстра-текст, как в more. Или можно? ;)

В смысле? я в єтих директивах еще плаваю.

Понял кажись. Хм, а кто нам мешает, в принципе, делать так:

<!–nextpage–>
<!–Текст для TITLE –>

?

Кстати, когда -то некоторые поисковики еще и доп. бонусы давали за хорошие комменты 😉

Понял кажись. Хм, а кто нам мешает, в принципе, делать так:

<!--nextpage-->
<!--Текст для TITLE -->

?

Тогда уже <!–title=текст для титлы –> как универсальный способ титлования. И фтопку плагины, которые хранят огромные базы с титлами! 😀

UPD или даже так [title]текст для титлы[/title] (для неспособных перейти в КОД)

Вообще-то технически это проще, спору нет, но боюся я, что это может быть расценено, как спам. Просто нельзя этого исключить. Тут– как по тонкому льду… 😉

Получается, что при этом надо еще это дело из текста страницы убирать, а? Тогда безопасно.

*с наглой мордой* : вы обсуждаете добавку к плагину? 😀 кот. позволит вместо Pages: 1 2 3 выводить текст:
Pages: основы тезисы положения, где основы, тезисы, положения — это ссылки на стрраницы поста 1, 2 и 3?
Я на прошлой неделе вручную вставляла навигацию по страницам поста прямо в текст. редактор после каждого <!–nextpage–> — получилось красиво и удобно, но замаялась…

*с наглой мордой* : вы обсуждаете добавку к плагину? :D кот. позволит вместо Pages: 1 2 3 выводить текст: 
Pages: основы тезисы положения, где основы, тезисы, положения — это ссылки на стрраницы поста 1, 2 и 3?
Я на прошлой неделе вручную вставляла навигацию по страницам поста прямо в текст. редактор после каждого <!--nextpage--> — получилось красиво и удобно, но замаялась…

В принципе, да. Хотя так не везде будет красиво. А сделать врезку в виде <div style="float : туды или сюды">список</div> –будет где-то лучше смотреться. Для каждого случая- свое.

Получается, что при этом надо еще это дело из текста страницы убирать, а? Тогда безопасно.

Конечно, убрать. Делов-то всего ничего. $post->post_content в полном нашем распоряжении до его вывода на страницу.

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

*с совсем с наглой мордой*
а можно их в ненум. список выводить?
<ul class="nextpagelinks">
<li><a href="http://www.site.ru" class="active">айн</a></li>
<li><a href="http://www.site.ru/2/">цвай</a></li>
<li><a href="http://www.site.ru/3/">драй</a></li>
</ul>
и отфлоатить такую конструкцию можно куда угодно, и стиль задать по вкусу легко

*с совсем с наглой мордой*
а можно их в ненум. список выводить? 
<ul class="nextpagelinks">
<li><a href="http://www.site.ru" class="active">айн</a></li>
<li><a href="http://www.site.ru/2/">цвай</a></li>
<li><a href="http://www.site.ru/3/">драй</a></li>
</ul>
и отфлоатить такую конструкцию можно куда угодно, и стиль задать по вкусу легко

Ну а мы про шо? 😉

Вчера по памяти писал и сделал ошибку (пост 19 этой ветки) -указал не тот элемент массива:

С учетом сделанных изменений код функции выглядит так:

function paging_title($title) {
global $post, $page;
if ($page > 1) {
$pages = preg_split(‘/<!–nextpage–>/’,$post->post_content,$page+1);
if(preg_match(‘/<!–(.+?)–>/’, $pages[$page-1], $titles)) {
return($titles[1].’ – ‘.$title);
}
else {
return($title);
}
}
return $title;
}

В коде страницы это выглядит так:


<!–nextpage–>
<!–Текст для титла страницы–>
<h1>Текст главного заголовка страницы</h1> (если он вообще необходим)

То есть, парсится комментарий под прагмой nextpage. Туда можно помещать текст, отличающийся от текста h1. Теперь для вывода уникального TITLE страницы заголовок роли не играет.

улучшенное рег.выражение:

/(<!–|<h\d[^>]*>)(.+?)(–>|<\/h\d>)/

то есть – теперь если текст титула может не отличаться от текста заголовка, то комментарий с текстом, идущий за прагмой nextpage, можно опустить – титул будет взят из самого верхнего на субстранице заголовка. Причем заголовок может быть любым, не только h1.

Но теперь нужный текст будет в 3-ем элементе массива , то есть $titles[2]

сейчас разгребу дела и попробую, потом доложу 🙂 wpseo тоже, спасибо за ответ в том топике!

Отлично работает! Только прийдется отказаться от использования seo title tag и использовать стандартный wp_title в <title></title>

function paging_title($title) {
    global $post, $page;
    if ($page > 1) {
        $pages = preg_split('/<!--nextpage-->/',$post->post_content,$page+1);
            if(preg_match('/(<!--|<h\d[^>]*>)(.+?)(-->|<\/h\d>)/', $pages[$page-1], $titles)) {
                return($titles[2].' - '.$title);
            }
            else {
                return($title);
            }
    }
    return $title;
}
add_filter('single_post_title', 'paging_title');

А с приоритетом плагинов поиграться, если они на одном крючке висят? Может и отказываться не придется.

А с приоритетом плагинов поиграться, если они на одном крючке висят? Может и отказываться не придется.

Угу. Я про этот параметр только несколько минут назад прочел. Вполне возможно, что и др. проблема Сони будет решена таким образом.

А я первый плагинчик состряпал 😉 мааа-а-ленький такой 😉 Но – тількі для сєбє 😉 шутю – просто заточен именно под мою задачу.

Уже заинтриговал. И что за задача? Может и мне такое надо, да я еще не знаю? 😉

Да ничего особенного. Дублирование постраничной навигации – чтобы и наверху страницы бар был для пролистывания статьи. Привязан к структуре моей страницы (вверху располагается после элемента <address> или заголовка). И файл post-template у меня изменен (дизайн бара). Привести к общему виду легко.

function multiple_pages_navigation_bar() {
global $post, $page;
$wlp = wp_link_pages(array(‘before’ => ‘<div class="parts page_top"><strong>Страницы:</strong><ul>’, ‘after’ => ‘</ul></div>’, ‘next_or_number’ => ‘number’, ‘echo’ => 0));// надо убрать мою специфику
$pages = preg_split(‘/<!–nextpage–>/’,$post->post_content,$page+1);// половина кода – из Вашего плуга
$cont = $pages[$page-1];
$res = preg_replace(‘/(<\/h\d>.*?<\/address>|<\/h\d>)/’, "$1$wlp", $cont, 1);// добавили верхний, 2-е место для правки – рег.выражение
$wlp = preg_replace(‘/(<div class="parts page_top">)/’, ‘<div class="parts page_bottom">’, $wlp, 1); //мои верхний и нижний бары немного отличаются друг от друга – меняем css класс
$res .= $wlp;//и нижний бар добавлен
return $res;
}
add_filter(‘the_content’, ‘multiple_pages_navigation_bar’);
?>

Главное, что принцип мне теперь понятен.

и вызов wp_link_pages из page.php убирается, конечно.

Следующим шагом заменим цифры более понятной информацией 😉

Удачи!

А с приоритетом плагинов поиграться, если они на одном крючке висят? Может и отказываться не придется.

Не знаю на чем они там висят и как с ними играться 🙂 мне seo title tag нужен для вывода доп. слов в татл постов, поэтому я сделала так:
<title><?php if ( is_single() ) { wp_title(‘ ‘); echo ‘ | ‘; seo_title_tag(); } else { seo_title_tag(); } ?></title>
и через title tag дописываю только доп. слова

Смотрим в seo-title-tag.php:
add_filter(‘single_tag_title’, ‘seo_title_tag_filter_single_tag_title’, 1, 2);

Крючок (hook) – single_tag_title. Приоритет – 1. Это значит, что он выполнится раньше других, висящих на том же крючке. Если цифры нет – то считается 10. Меняя эту циферьку у плагинов, можно управлять порядком выполнения, то есть обработки чего они там должны обрабатывать.

вот хороший плагин для сео
http://wp.uberdose.com/2007/03/24/all-in-one-seo-pack/

Гутен морген, maxxximka! 😀

Слушайте, я тут подумала, может на заказ мне плагин напишете/допишете? Я не знаю сколько плагин такой может стоить, но 99,9% меня устроит цена, которая устоит плагинописчика 🙂
Плагин, который бы навигацию по страницам поста выводил не так как делает wp_pages:
Стр.: 1 2 3 4 5
а примерно так: http://www.viphotels.su/kraspol/grand-hotel-polyana/ – лучше всего функцией типа wp_pages — чтобы если надо вставить только вверху поста такую навигацию или вверху и внизу.
через ul.nextpagelinks li и желательно «подсветка» классом (li.active например) текущей страницы поста и чтобы можно было назначить имя навигационной ссылке (номера, коттеджи, фото…).
Плюс в тайтл страниц поста добавляется доп. слова, ну то есть как сейчас там сделано (см ссылку выше).

совместимость: от wp 2.2.3

Соня, а как ты думаешь, заголовок лучше "прятать" в <!–nextpage или в [title]? Или и так, и так?

upd: пока делаю через расширение nextpage, для первой – название страницы.

В [title] удобнее, т.к. если включен виз редактор то его ([title] ) видно и не надо переключаться в режим код и шарить там в поисках

А nextpage ты из визуального вставляешь? 😉 Ладно, бум делать универсальное. И [title] бум менять на <!–nextpage–> – для визулизации 🙂

Так что все-таки делать с первой страницей? пункт меню = названию поста сойдет?

nextpage из визуального вставляю (в advanded tinymce есть такая типа «кнопка»).

Так что все-таки делать с первой страницей? пункт меню = названию поста сойдет?

сойдет конечно. а можно пристроить так: если соотв. строчка в файле плагина не заполнена, то выводить заголовок поста, если заполнена, то брать то что в этой строчке написано, ну то есть в самом плагине можно настроить эту первую ссылку из навигации
title=’отель’
если это шибко геморойно, то хрен с ним, пусть будет пункт меню = названию поста

В общем так, я сейчас тебе кину мылом то, что есть на сейчас, а ты посмотришь. Я пока буду дальше его ковырять.

Давай! 🙂

я по ходу дела внес маленькое усовершенствование для удобства работы.

смысл – если захотели изменить символ(ы) разделителя для составного title, то лучше его определить в одном месте.

я добавил строку в wp_config., напр. такую – $dim_delimiter = ‘ ^ ‘;

далее, изменил в header.php строку, где формируется title. У меня она выглядит сейчас так: <title><?php global $dim_delimiter; wp_title(); ?><?php if(is_single()){echo($dim_delimiter);?>Blog Archive <?php }echo($dim_delimiter); bloginfo(‘name’);?></title>

и,наконец, в плагинчике для титлов субстраниц делаем изменения тож. У меня функция в нем выглядит теперь так:

function paging_title($title) {
global $post, $page, $dim_delimiter;
if($page > 1) {
$pages = preg_split(‘/<!–nextpage–>/’,$post->post_content,$page+1);
if(preg_match(‘/(<!–|<h\d[^>]*>)(.+?)(–>|<\/h\d>)/’, $pages[$page-1], $titles)) {
return($titles[2].$dim_delimiter.$title);
}
}
return $title;
}

теперь разделитель изменяется только из главного конфига.

—-
да, еще замечание с точки зрения (Ю.Б. не читать! 😉 SEOнизма – известной продажной деффки мирового имперьялизма:

наверное, для TITLE лучше не использовать всякие entity типа &raquo; – ведь целых 9 символов (с учетов окружающих пробелов) жреть…

А у меня вырисовывается супермегаплагин. Я его срастил с авторазбивалкой, добавил страницу настроек, научил понимать по-всякому оформленное разбиение, выводить оглавление. В планах – виджет. В общем, получается дополнительный функционал – разбиение постов/страниц на главы. Только нафига оно надо, спрашивается? 😀

У меня отношение к энтому делу неоднозначное. Распространяться не буду, поскольку получится целая сага. В двух словах – все эти прибамбасы имеют второстепенное и непостоянное во времени значение, но самое главное -контент, его качество и количество.

Мне надо 🙂 Думаю еще многим пригодится, только они этого пока не знают.
Авторазбивалка мне лично не нужна (в любом случае «руками» режу пост), так что даже в существующем варианте chapter радует меня на 10 праздников 8 марта вперед, вплоть до 2018 года 😀

Нашла конфликт (даже не конфликт, а недоразумение) с плагином breadcrumb-nav-xt первые пять слов страницы (Page) лезут в «хлебные крошки»

UPD если в начале Страницы (Page) написать [chapter]блабла[/chapter] то все ок становится с breadcrumb-nav-xt, [chapter]блабла[/chapter] нигде не показывается

У меня Breadcrumb NavXT ругается матом (For some reason the function get_currentuserinfo() did not behave as expected.), но типа работает. Ща посмотрю, что они там не поделили.

UPD1 Что-то этот Breadcrumb тупо повторяет заголовок поста. И больше ничего.

UPD2 В плагине написано: "//Get the post title, this is a more robust method than using $post" Гы-гы, Акелла промахнулся! 😆 Лучше бы он брал из $post.

у меня wp 223 и Breadcrumb NavXT 1.7
ой… а больше не чудит с 5-ю словами в Страницах Pages…
сначала старая версия Breadcrumb NavXT была, а сейчас новую залила (которая 1.7)
я весь день что-то меняла-меняла… момент пропустила когда все ок стало… видимо все же новая версия Breadcrumb NavXT все на место поставила. Я использую этот плагин только в Страницах, у меня на данный момент оба плагина работают как часы

Дык, вперед! Мне не интересно :) и по большому счету не нужно. Большие тексты я предпочитаю бить автоматом (первый мой плагин к WP), а там ни о каких h2 речь не идет - где поймает конец абзаца, там и рубит.

Большие тексты я предпочитаю бить автоматом (первый мой плагин к WP)

а можно где-то скачать этот плагин или может мыльнешь мне его natlas@narod.ru или по асе 165244
просто надоедает каждый раз после добавления поста пользователями разбирать его ручками

P.S. прошу прощения что вопрос не по тебе топика, просот долго искал по инету подобный плагин и ничего толком не нашел

Paging plugin возвращается

Предупреждение: плагин не любит хитровыформатированные тексты, чем проще – тем лучше.

Anonymous
Отправить
Ответ на: