Отделение TrackBack ‘ов от комментариев
Возиникла мысль отделить TrackBack ‘и от комментариев. Во-первых, трекбэки среди комментариев мешают разговору, а во-вторых, отдельный список сразу же показывает, кто на тебя сослался. Не долго думая я пошел в гугл искать как это можно сделать. В итоге я нашел один вариант, но мне он не очень понравился, так как там был использован еще один запрос к базе, а это дополнительная нагрузка для блога. Дальше я не стал искать, а решил сам сделать способ без второго запроса.
Отделение TrackBack ‘ов от комментариев (для WordPress)
1. Находим файл шаблона с комментариями. У меня это comments.php.
2. Ищем код вывода комментариев. Выглядит он примерно так:
// ................................
// код вывода комментария
// ................................
?>
3. Внутрь цикла foreach вставляем:
if (get_comment_type() == "comment") { ?>
// ................................
// код вывода комментария
// ................................
?>
} ?>
Таким образом мы выводим данные только с типом “comment”. В итоге должно получится что-то подобное:
if (get_comment_type() == "comment") { ?>
// ................................
// код вывода комментария
// ................................
?>
} ?>
4. Теперь нам нужно вывести список трекбэков. Для этого в любом месте после вывода комментариев выводим trackbaсk ‘и с помощью подобного кода:
Трекбэки
-
foreach ($comments as $comment) : ?>
if (get_comment_type() != "comment") { ?>
- } ?>
Трекбэки выводятся так же как и комментарии, единственное что мы указываем, так это то, что выводить надо все, что не равно типу “comment”.
TrackBack ‘ам можно дать такой же дизайн, как и у комментариев.
Но есть одно но, при таком способе если трекбэков нет, то под записей
Трекбэки
ничего не будет, да и сам заголовок будет не к месту.
Если вам это не нравится, то проблему частично можно решить изменив код вывода трэкбэков на такой:
Трекбэки
-
$trackbacks = 0; ?>
foreach ($comments as $comment) : ?>
if (get_comment_type() != "comment") { ?>
$trackbacks++; ?>
- } ?> if (!$trackbacks) { ?> Трекбэков к записи нет } ?>
Теперь, если трекбэков нет, будет выведен соответствующий текст. Избавится от заголовка при отсутствии TrackBack ‘ов можно с помощью еще одного цикла. Но я не буду сейчас это рассматривать. Кроме того, заголовок можно вообще не указывать. И под конец, можно воспользоваться отдельным плагином, но опять же, это лишня нагрузка.
Все, теперь TrackBack ‘и выводятся отдельно от комментариев и не мешают обсуждению.