Відокремлюваний трекбеки від коментарів в wordpress
У wordpress існує 2 типи записів коментарів — повідомлення, залишені користувачами, і так звані трекбеки (пінгбеки). Останні з’являються в блоге, коли якийсь інший блоггер ставить в своєму посту посилання на вашу статтю. Як правило, в шаблонах розробники суміщають ці два поняття, що приводить до невеликої плутанини і плутанини. Іноді при цьому втрачається нитка обговорення. Тому в даному посту я розповім про те, як відокремити трекбеки і пінгбеки від самих коментарів.
для почала невеликий наочний приклад: зліва у нас список коментарів разом з трекбекамі, а справа розділений. Він, як і велика поста статті узятий з оригінальної англомовної статті Separating Trackbacks And Pingbacks From Comments In 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>
вніманіє! Приклади код для виведення коментарів спеціально спрощені, щоб була зрозуміла суть змін. Звичайно, ви повинні будете додати код, який відповідає за утаєння коментарів, чекаючих модерацию або там, де вони відключені.
я вважаю за краще ставити у відповідь посилання в постах где-тол, а не в трекбеках — так для автора і мене корисно. Добре дл яетого підходять підбірки цікаво почитати, де можна вибрати самий корисні пост, автора, що посилається.
Ваш отзыв