classy icon indicating copy to clipboard operation
classy copied to clipboard

class Comment

Open LehaMotovilov opened this issue 7 years ago • 3 comments

Сегодня решил посмотреть класс Comment. Если не смотреть на get/set методы то его функционал в основном заключается в формировании структуры комментариев parent->child. Так же в текущей реализации класс Comment не поддерживает вложеность больше одного уровня.

Я предлагаю в данном случае использовать родной WordPress API для отображения комментов. Убрать логику формирования структуры parent->child из Comment и добавить метод classy_comments для обработки вывода. В общем сделать Comment больше как Helper а не как wrapper для WP_Comment.

Вариант вывода комментариев: views/layouts/comments.blade.php

<h4>{{ get_comments_number_text(); }}</h4>
{{ wp_list_comments( [ 'callback' => [ '\Classy\Comment', 'render_comments' ] ] ); }}

Что думаешь?

LehaMotovilov avatar Jul 15 '16 07:07 LehaMotovilov

У wp_list_comments существует проблема в том, что она привязана к The Loop и с этим ничего не сделаешь. На мой взгляд в теме важно сохранить то, чтоб все выполнялось относительно родительских объектов, в нашем случае - \Classy\Post. Глобальные состояния - болезнь WordPress, которую нужно лечить, пускай и макаронным переписыванием дефолтной функциональности.

anrw avatar Jul 15 '16 10:07 anrw

На счет 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. Хотя пожалуй этот вопрос может легко перерости в холивар 😄

LehaMotovilov avatar Jul 15 '16 11:07 LehaMotovilov

Ага 😄 Но ты меня все равно не убедил :)

Получается в этом случае, вместо того, чтобы во вьюшке верстать непосредственно вывод необходимо будет выполнять функцию, вывод которой будет определен в \Classy\Comment::render_comments(), что как мне кажется не очень удобно. Конечно же это можно заврапить все в отдельный метод относительно \Classy\Post и вьюшку тянуть откуда угодно, но тогда возникает другая проблема: а что делать когда на проекте необходимо иметь несколько вьюшек для комментариев? Писать для каждого варианта отображения отдельный метод?

anrw avatar Jul 16 '16 11:07 anrw