ГлавнаяWordpressАвторские Функции → Перелинковка статей в WordPress (предыдущие записи из категории)

Перелинковка статей в WordPress (предыдущие записи из категории)

Комментариев: 87Перелинковка статей в WordPress (предыдущие записи из категории)
  • Супер! В ближайшее время будут тестировать. Спасибо!

    P.S. Очень нравится как ты все описываешь, поясняешь, оформляешь. Очень доступно и понятно smile

    ОТВЕТИТЬ ↓
    • Спасибо большое, за такие теплые слова! smile

      ОТВЕТИТЬ ↓
  • Добрался, наконец. Обнаружил одну проблемку.

    Шаблон даты у меня указан следующий: {date:j F Y г.}, и результат выглядит вот так: 16 Октябрь 2008 г.

    Проблема заключается в следующем - я использую плагин MaxSite Russian Date, который вышеуказанный текст даты превращает в следующий вид: 16 октября 2008 г.

    Но в результате выполнения твоей функции дата почему-то не поддается действию этого плагина. Сможешь починить?

    ОТВЕТИТЬ ↓
    • Поправил.

      Теперь к дате применяются фильтры the_time. Один из таких фильтров используется плагином MaxSite Russian Date.

      Чтобы все заработало, нужно просто заменить код функции на новый (обновил код функции в посте).

      ОТВЕТИТЬ ↓
      • Спасибо! Теперь все супер.

        ОТВЕТИТЬ ↓
  • Спасибо, код отличный!
    Единственное, что хотелось быв нем изменить, так это не показывать количество комментариев, если их нет. А то как-то сиротливо смотреть на нули.

    ОТВЕТИТЬ ↓
    • Отличное замечание. Чтобы поправить в 72-й строке поменяйте это:

      $Sformat = str_replace('{comments}', $pst->comment_count, $Sformat);

      на это:

      $Sformat = str_replace('{comments}', (($pst->comment_count==0)?'':$pst->comment_count), $Sformat);

      В этом случае, если число комментов равно 0, то этот ноль просто не будет отображаться. Проблема может возникнуть, если счетчик комментария оформляется, например, так заголовк статьи - дата (число комментов) и число комментов равно 0, то результат будет такой заголовк статьи - дата () (т.е. скобки останутся).

      П.С. Обновил код в посте

      ОТВЕТИТЬ ↓
  • Отличная функция, спасибо smile Но заметил небольшой баг, функция не воспринимает пермалинки. То есть, если у меня специфичное чпу, типа /archives/%post_id% - то ссылки появляются на /postname почему то... вот так, использовал функцию для круговой перелинковки, не из под категории.

    вот из этого поста, всё очень хорошо работает. ещё раз спасибо smile

    ОТВЕТИТЬ ↓
    • Очень странно! На самом деле функция прекрасно воспринимает пермалинки, потому что в ней используется стандартная WordPress'овскя функция get_permalink() . Правда, я не совсем понял из какого "поста, все очень хорошо работает", но раз что-то очень хорошо работает, то я определенно рад за вас! laugh

      ОТВЕТИТЬ ↓
  • Привет. У Dimox взял код перелинковок как предыдущих по сайту, так и по категориям, он посоветовал зайти сюда. Я не силен в кодах, но судя по описанию изменения не принципиальные, верно? можно и старым кодом пользоваться, да?

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

    Попробую "новый код" на другом сайте, сравню, может "новый" и лучше... wink

    ОТВЕТИТЬ ↓
    • можно и старым кодом пользоваться, да?

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

      Разумно ли сделать вывод как предыдущих статей, так и следующих в общей перелинковке сайта

      Если говорить о перелинковке как таковой, со своим вытекающим СЕО эффектом, то не вижу ничего разумного в том, чтобы выводить не только предыдущие записи, но еще и следующие - это лишнее. С другой стороны, для удобства в навигации для посетителей такое можно, а может даже, нужно сделать, но это уже другая тема smile

      Как вариант, ставьте блок "Пердыдущие записи" и под статьей всегда ссылку на следующую запись, если таковая имеется (стандарт ВП next_post_link()).

      ОТВЕТИТЬ ↓
  • У меня в конце странице есть ссылки на следующую и предыдущую записи. Меня больше интересовал вопрос относительно эффекта при выведении следующих записей, если это выведение записей не дает эффекта, тогда понятно, что оно не нужно. Разве что для посетителей wink если хуже от этого не будет...

    ОТВЕТИТЬ ↓
  • Дельная функция, интересно, даст ли эффект при расчете гугловского пейджранка ?
    Попробую на одном из своих блогов, если прокатит такая перелинковка, то напишу миниобзор у себя на блоге.

    ОТВЕТИТЬ ↓
    • даст ли эффект при расчете гугловского пейджранка ?

      Чего не знаю, того не знаю smile Мне кажется при такой равномерной перелинковке PR может растворится, а может и наоборот, тут, наверное, все зависит от конкретного случая. Хотя, если честно, думаю на ПР лучше скажется перелинковка по меткам, т.к. останутся не попавшие в перелинковку страницы им "внутрений ПР" не будет светить, зато другим больше достанется (дотянут до получения хотябы ПР1), а ПР всем не нарастишь все-равно. Но и это для конкретного случая smile

      то напишу миниобзор

      Будет интересно почитать, если получится выявить влияние такой перелинковки на ПР!

      П.С. Все вышесказанное, лишь мысли вслух.

      ОТВЕТИТЬ ↓
  • Действительно очень полезно, спасибо! С твоего позволения, размещу у себя эту статью.

    Пы.Сы. со ссылкой на источник, конечно smile

    ОТВЕТИТЬ ↓
    • кстати, было бы неплохо, чтобы циферка кол-ва коментов была ссылкой на коментарии к посту.
      у меня получилось сделать это так:

      foreach ($res as $pst){
      		$x == 'li1' ? $x = 'li2' : $x = 'li1';
      		$Title = $pst->post_title;
      		$a1 = "<a href='". get_permalink($pst->ID) ."' title='{$Title}'>";
      		$a2 = "</a>";
      		$comment_count = $pst->comment_count;
      		$com = (($comment_count==0)?'':"<a href='".get_permalink($pst->ID)."#comments'>".$comment_count."</a>");
      
      		if ($format){
      			$date = apply_filters('the_time', mysql2date($date_m[1],$pst->post_date));
      			$Sformat = str_replace ($date_m[0], $date, $format);
      			$Sformat = str_replace('{title}', $Title, $Sformat);
      			$Sformat = str_replace('{a}', $a1, $Sformat);
      			$Sformat = str_replace('{/a}', $a2, $Sformat);
      			$Sformat = str_replace('{comments}', $com, $Sformat);
      		}
      ОТВЕТИТЬ ↓
      • понимаю, что немного кривовато, может подправите?

        ОТВЕТИТЬ ↓
        • Сомнительное юзабилити, если честно.
          С точки зрения SEO, такие ссылки точно - ничего хорошего, потому что, во-первых, лишние ссылки на странице, во-вторых, анкоры числовые - кажется это не есть гуд. А если подумать, то кто будет пользоваться такими ссылками? По названию статьи сразу переходить к комментариям, что-то из разряда, - "я и о спамерах подумал". Но, это конечно онли ИМХО smile

          Вы правильно дополнили код, только собирать еще раз постоянную ссылку функцией get_permalink - это лишнее. Вот, чуть-чуть поправил:

          
          foreach ($res as $pst){
          		$x == 'li1' ? $x = 'li2' : $x = 'li1';
          		$Title = $pst->post_title;
          		$a1 = "<a href='".( $url=get_permalink($pst->ID) )."' title='{$Title}'>";
          		$a2 = "</a>";
          		$cc = $pst->comment_count;
          		$com = ($cc==0)?'':"<a href='$url#comments'>$cc</a>";
          
          		if ($format){
          			$date = apply_filters('the_time', mysql2date($date_m[1],$pst->post_date));
          			$Sformat = str_replace ($date_m[0], $date, $format);
          			$Sformat = str_replace('{title}', $Title, $Sformat);
          			$Sformat = str_replace('{a}', $a1, $Sformat);
          			$Sformat = str_replace('{/a}', $a2, $Sformat);
          			$Sformat = str_replace('{comments}', $com, $Sformat);
          		}
          
          ОТВЕТИТЬ ↓
          • я полностью согласен... просто старая привычка... если есть упоминание о комментариях, должна быть ссылка на них... спасибо за исправление.

  • День бодрый. Есть плагин internal_link_building, он слова в тексте делает ссылками.
    Но он реально неудобен, потому-что его надо вручную заряжать в админке, каждое слово и отдельный урл. Можно ли как нибудь автоматизировать перелинковку статей? Т.е берутся например два рандомных слова в самом посте, и они будут ссылаться на две рандомно выбранные страницы сайта. Как в википедии.

    ОТВЕТИТЬ ↓
    • Сделать можно конечно, только зачем это нужно - не качественная перелинковка будет ведь - никакой релевантности, никакой пользы для посетителей от этих ссылок не будет.

      Я не понял смысла в такой рандомной перелицовке.

      Как в википедии.

      Там вроде все ссылки очень даже релевантные (по теме), я там рандома не замечал что-то.

      ОТВЕТИТЬ ↓
      • Это больше нужно для внутренней оптимизации блога, для поисковых систем.
        Это дорогое удовольствие, написать такой скрипт?

        Еще вопрос) Большая ли разница в нагрузке на сервер, когда ссылки на странице прописаны в базе данных и когда эти ссылки вызываются каким нибудь плагином, например тем же related post? Подразумевается что записей не одна сотня.

        ОТВЕТИТЬ ↓
      • Это дорогое удовольствие, написать такой скрипт?

        Смотря что считать "дорого" smile А вообще, ничего сложного в написании такого скрипта нет. Но в нем придется как-то продумать логику - куда ссылаться. Вообще, извините уж, но бредовая идея на мой взгляд. Что-то куда-то будет ссылаться - какая же это внутренняя оптимизация?

        Еще вопрос ...

        Разница конечно большая и тем она больше, чем больше статей. Когда ссылки прописаны в БД нагрузки по генерации этих ссылок вообще нет. Точно не знаю, нужно тестировать, а вообще думаю до тысячи статей нагрузка не смертельная будет. В любом случае, если можете работать с БД лучше в БД писать.

        ОТВЕТИТЬ ↓
  • Здравствуйте. Очень заинтересовал этот скрипт, спасибо за проделанную работу, но мне немного не понятно куда например будет ссылаться самая ранняя статья, если скажем значение 5? На 5 самых новых или на 5 следующих по "старости"?

    И еще 1 вопрос. Корректно ли будет работать перелинковка, если много статей будет опубликовано за 1 час? Скрипт берет минимальное значение в часах или минутах?

    Я в программировании ничего не понимаю, так что извините, если вопросы слишком тупые оказались.

    ОТВЕТИТЬ ↓
    • Ссылаться будет на 5 предыдущих (следующих по "старости"), если предыдущих меньше 5, то недостающие будут самые новые (это для первых 5 постов в рубрике, у них предыдущих 5 не наберется ведь).

      Корректно ли будет работать перелинковка, если много статей будет опубликовано за 1 час?

      Да, время учитывается вплоть до секунд.

      ОТВЕТИТЬ ↓
Форма комментирования

¤ Вставляйте код кнопкой: "Код" (php, js, html, css, sql);
¤ Выделяйте HTML код кнопкой: "Выделить" (<div>);
¤ Перед отправкой комментария используйте "Превью";
¤ Не пишите спам/бред — бесполезно!

Подписаться на комментарии без комментирования:

X

Забыли пароль?