Отделение TrackBack ‘ов от комментариев

Возиникла мысль отделить TrackBack ‘и от комментариев. Во-первых, трекбэки среди комментариев мешают разговору, а во-вторых, отдельный список сразу же показывает, кто на тебя сослался. Не долго думая я пошел в гугл искать как это можно сделать. В итоге я нашел один вариант, но мне он не очень понравился, так как там был использован еще один запрос к базе, а это дополнительная нагрузка для блога. Дальше я не стал искать, а решил сам сделать способ без второго запроса.

Отделение TrackBack ‘ов от комментариев (для WordPress)

1. Находим файл шаблона с комментариями. У меня это comments.php.

2. Ищем код вывода комментариев. Выглядит он примерно так:

  1. <?php if ($comments) : ?>
  2. <?php foreach ($comments as $comment) : ?>
  3. <?  
  4.    // …………………………..
  5.    // код вывода комментария
  6.    // …………………………..
  7. ?>
  8. <?php endforeach;?>
  9. <?php endif; ?>
  10.  

3. Внутрь цикла foreach вставляем:

  1. <? if (get_comment_type() == "comment") {  ?>
  2. <?  
  3.    // …………………………..
  4.    // код вывода комментария
  5.    // …………………………..
  6. ?>
  7. <? } ?>

Таким образом мы выводим данные только с типом “comment”. В итоге должно получится что-то подобное:

  1. <?php if ($comments) : ?>
  2. <?php foreach ($comments as $comment) : ?>
  3. <? if (get_comment_type() == "comment") {  ?>
  4. <?  
  5.    // …………………………..
  6.    // код вывода комментария
  7.    // …………………………..
  8. ?>
  9. <? } ?>
  10. <?php endforeach;?>
  11. <?php endif; ?>

4. Теперь нам нужно вывести список трекбэков. Для этого в любом месте после вывода комментариев выводим trackbaсk ‘и с помощью подобного кода:

  1. <h4>Трекбэки</h4>
  2. <ul>
  3. <? foreach ($comments as $comment) : ?>
  4.  <? if (get_comment_type() != "comment")  { ?>
  5.  <li>
  6.    <?php comment_author_link() ?><br>
  7.    <?php comment_text() ?>
  8.  </li>
  9.  <? } ?>
  10. <?php endforeach; ?>
  11. </ul>

Трекбэки выводятся так же как и комментарии, единственное что мы указываем, так это то, что выводить надо все, что не равно типу “comment”.

TrackBack ‘ам можно дать такой же дизайн, как и у комментариев.

Но есть одно но, при таком способе если трекбэков нет, то под записей

  1. <h4>Трекбэки</h4>

ничего не будет, да и сам заголовок будет не к месту.

Если вам это не нравится, то проблему частично можно решить изменив код вывода трэкбэков на такой:

  1. <h4>Трекбэки</h4>
  2. <ul>
  3. <? $trackbacks = 0; ?>
  4. <? foreach ($comments as $comment) : ?>
  5.  <? if (get_comment_type() != "comment")  { ?>
  6.  <? $trackbacks++; ?>
  7.  <li>
  8.    <?php comment_author_link() ?><br>
  9.    <?php comment_text() ?>
  10.  </li>
  11.  <? } ?>
  12. <?php endforeach; ?>
  13. <? if (!$trackbacks) { ?><p>Трекбэков к записи нет</p><? } ?>
  14. </ul>

Теперь, если трекбэков нет, будет выведен соответствующий текст. Избавится от заголовка при отсутствии TrackBack ‘ов можно с помощью еще одного цикла. Но я не буду сейчас это рассматривать. Кроме того, заголовок можно вообще не указывать. И под конец, можно воспользоваться отдельным плагином, но опять же, это лишня нагрузка.

Все, теперь TrackBack ‘и выводятся отдельно от комментариев и не мешают обсуждению.

Получать обновления:

комментарий: 14

  1. fullseo пишет:

    Немного не улавливаю суть этого трэкбэка??

  2. admin пишет:

    fullseo, http://ru.wikipedia.org/wiki/Trackback

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

  3. Flector пишет:

    о, как раз искал способ отделить trackback в wordpress от комментариев, а то оформление все сыпется.

  4. Отделение TrackBack ‘ов от комментариев…

    Возиникла мысль отделить TrackBack ‘и от комментариев. Во-первых, трекбэки среди комментариев мешают разговору, а во-вторых, отдельный список…

  5. Отделение TrackBack ‘ов от комментариев…

    Возиникла мысль отделить TrackBack ‘и от комментариев. Во-первых, трекбэки среди комментариев мешают разговору, а во-вторых, отдельный список…

  6. DimoninG пишет:

    Кстати, есть такой плагин, который отделает трекбеки от коментов, правда я забыл как он называется )) Хорошая статья, спс.

  7. admin пишет:

    DimoninG, да, он где-то мне попадался, но я тоже уже забыл, как он называется. Пойму лучше сделать так, как я описал, чем устанавливать еще один плагин.

  8. DimoninG пишет:

    Киря Робски - это спам. Он пришел мне в 4 других блога с совершенно аналогичным сообщением.

  9. admin пишет:

    DimoninG, понятно, удалил его.

  10. [...] дополнение к статьте Отделение TrackBack ‘ов от комментариев. Я расскажу как избавится от заголовка при отсутствии [...]

  11. [...] Отделение TrackBack ‘ов от комментариев [...]

  12. [...] чтобы узнать как это сделать читаем статью Отделение TrackBack ‘ов от комментариев и ее продолжение. Далее нужно воспользоваться [...]

  13. На Ваш сайт знакомый в аську ссылку кинул. Оказалось ,что не зря :) Понравилось. Тепрь постоянно читать буду :)

  14. Спасибо, себе отделил, но осталась одна проблемка: в комментах “ноуфоллоу” и “ноуиндекс”, а в сайдбаре без, как бы сделать наоборот? Способ через джиквери знаю, но уж очень это напрягает, может, как-то по-другому можно?

    или вообще, как поставить ноуфоллоу для трекбеков (без автоплагинов), не могли бы привести примерчик, если его в другой класс засунуть, отличный от “комментов”? С ноуиндекс итак понятно… :)

ОСТАВИТЬ КОММЕНТАРИЙ

Я не робот.
сделано dimoning.ru