Open LehaMotovilov opened 8 years ago
У wp_list_comments
существует проблема в том, что она привязана к The Loop
и с этим ничего не сделаешь. На мой взгляд в теме важно сохранить то, чтоб все выполнялось относительно родительских объектов, в нашем случае - \Classy\Post
. Глобальные состояния - болезнь WordPress, которую нужно лечить, пускай и макаронным переписыванием дефолтной функциональности.
На счет wp_list_comments()
не согласен.
Пример, у меня есть WP_Post с ID 30 и у него есть какие-то комменты. В любом месте проекта я могу сделать вот так:
$post_id = 30;
wp_list_comments(
[ 'callback' => [ '\Classy\Comment', 'render_comments' ] ],
get_comments( [ 'post_id' => $post_id ] )
);
comment_form( [], $post_id );
На счет определенных проблем с WordPress - согласен, однако если переписать все и вся - то зачем тогда вообще использовать WordPress? Можно тот же Laravel/Yii/Symphony/(любой другой) фреймворк рядом поставить и в WordPress WP_USE_THEMES false
. Хотя пожалуй этот вопрос может легко перерости в холивар 😄
Ага 😄 Но ты меня все равно не убедил :)
Получается в этом случае, вместо того, чтобы во вьюшке верстать непосредственно вывод необходимо будет выполнять функцию, вывод которой будет определен в \Classy\Comment::render_comments()
, что как мне кажется не очень удобно. Конечно же это можно заврапить все в отдельный метод относительно \Classy\Post
и вьюшку тянуть откуда угодно, но тогда возникает другая проблема: а что делать когда на проекте необходимо иметь несколько вьюшек для комментариев? Писать для каждого варианта отображения отдельный метод?
Сегодня решил посмотреть класс
Comment
. Если не смотреть на get/set методы то его функционал в основном заключается в формировании структуры комментариев parent->child. Так же в текущей реализации классComment
не поддерживает вложеность больше одного уровня.Я предлагаю в данном случае использовать родной WordPress API для отображения комментов. Убрать логику формирования структуры parent->child из
Comment
и добавить методclassy_comments
для обработки вывода. В общем сделатьComment
больше как Helper а не как wrapper дляWP_Comment
.Вариант вывода комментариев:
views/layouts/comments.blade.php
Что думаешь?