У wordpress існує 2 типи записів коментарів — повідомлення, залишені користувачами, і так звані трекбеки (пінгбеки). Останні з’являються в блоге, коли якийсь інший блоггер ставить в своєму посту посилання на вашу статтю. Як правило, в шаблонах розробники суміщають ці два поняття, що приводить до невеликої плутанини і плутанини. Іноді при цьому втрачається нитка обговорення. Тому в даному посту я розповім про те, як відокремити трекбеки і пінгбеки від самих коментарів.

для почала невеликий наочний приклад: зліва у нас список коментарів разом з трекбекамі, а справа розділений. Він, як і велика поста статті узятий з оригінальної англомовної статті Separating Trackbacks And Pingbacks From Comments In WordPress.

трекбеки коментарі wordpress

Зачем потрібне розділення? Деякі статті в блоге можуть збирати достатньо велике число трекбеков, відсовуючи при цьому нормальні коментарі далеко вниз. Крім того, як я вже сказав вище, такі посилання можуть розбавляти записи користувачів, і в результаті читати всю дискусію буде не дуже зручне. В світлі даних думок варіант справа мені здається дуже органічним і чудовим.

в принципі, слід відмітити, що трекбеки в коментарях можна взагалі відключити. Деякі роблять це із-за боязні спаму в своєму блоге, або просто не бачать необхідності в таких повідомленнях. Хоча спочатку сенс даного функціонала був вельми позитивним — якщо блоггер ставив посилання на іншого автора, то вона автоматично ставилася і на його проект. Але сьогодні ми відключати трекбеки повністю не будемо, лише приберемо їх із загального списку коментарів.

ітак, загалом код виведення записів коментарів виглядає так:

<?php if ($comments) : ?>
	<ol>
	<?php foreach ($comments as $comment) : ?>
	<li id="comment-<?php comment_id() ?>" class='commentitem'>
	<!-- THE COMMENT LAYOUT -->
	</li>
	<?php endforeach; /* end for each comment */ ?>
	</ol>
<?php endif; ?>

он відображає всі типи записів в одному місці. Для розділення використовуватимемо функцію get_comment_type, яка повертає відповідні типи коментарів comment, trackback і pingback.

таким чином, щоб вивести список коментарів від користувачів, використовуємо код:

<?php if ($comments) : ?>
	<ol>
	<?php foreach ($comments as $comment) : ?>
	<?php
	$commenttype = get_comment_type();
	if($commentType == 'comment') :
	?>
	<li id="comment-<?php comment_id() ?>" class='commentitem'>
	<!-- THE COMMENT LAYOUT -->
	</li>
	<?php endif;/* end if comment check */ ?>
	<?php endforeach; /* end for each comment */ ?>
	</ol>
<?php endif; ?>

следующим кроком потрібно скопіювати його потрібне місце шаблону (можна навіть під форму коментарів), де заздалегідь замінити умову if($commentType == ‘comment’) на if($commentType != ‘comment’). Воно є протилежним для знаку рівності і виходить вибирає всі записи, які немає комментаріяїм.

<?php if ($comments) : ?>
	<ol>
	<?php foreach ($comments as $comment) : ?>
	<?php
	$commenttype = get_comment_type();
	if($commentType != 'comment') :
	?>
	<li id="comment-<?php comment_id() ?>" class='trackbackitem'>
	<!-- THE PINGS LAYOUT -->
	</li>
	<?php endif;/* end if NOT comment check */ ?>
	<?php endforeach; /* end for each comment */ ?>
	</ol>
<?php endif; ?>

второй крок, який можна виконати, — задати відображення для трекбеков. Для цього використовуємо всього одну функцію comment_author_link(), яка ці записи відображатиме.

<li id="comment-<?php comment_id() ?>" class='trackbackitem'>
	<?php comment_author_link(); ?>
</li>

вніманіє! Приклади код для виведення коментарів спеціально спрощені, щоб була зрозуміла суть змін. Звичайно, ви повинні будете додати код, який відповідає за утаєння коментарів, чекаючих модерацию або там, де вони відключені.

я вважаю за краще ставити у відповідь посилання в постах где-тол, а не в трекбеках — так для автора і мене корисно. Добре дл яетого підходять підбірки цікаво почитати, де можна вибрати самий корисні пост, автора, що посилається.