«Категории» для комментариев?

Например, почта имеет область комментариев с тремя вкладками differnet, например комментариями, отзывами и вопросами.

Я заглядывал в нее некоторое время, но я не придумал идеальный план. Я решил, что пришло время обратиться к богам WordPress здесь.


Концепция проста:

------------------------------------------------------------------ 1. category link 2. category link 3. category link ------------------------------------------------------------------ Current category comments ------------------------------------------------------------------ 

Если щелкнуть одну из ссылок, запустите (через ajax или нет, вопрос вкуса) запрос, который получит комментарии категории X.

Я заглянул в WP_Comment_Query (), но я не уверен, как с этим справиться. Нет никакого параметра категории или типа, поэтому я решил, что комментарий meta , вероятно, лучший способ пойти ..


Добавление категории при комментировании:

 //To functions.php or create a plugin add_action( 'comment_post', 'add_comment_category' ); function add_comment_category( $comment_id ) { add_comment_meta( $comment_id, 'my_comment_category', $_POST['hidden-input-category-value'] ); } 
  • Front-end в значительной степени закрыт, но область администрирования – совершенно другая история, и я не уверен, что я должен добавлять скрытый ввод везде, где вы можете комментировать (редактировать страницу сообщения, страницу комментариев и т . Д.) . Есть ли лучшая альтернатива этому? Как еще я могу передать текущую категорию ?
  • Также скрытый ввод может быть изменен средними людьми и нарушить систему – совсем не хорошо.
  • Im довольно уверен, что я должен делать комментирование через ajax, так что мне не придется беспокоиться об открытии неправильной вкладки при перезагрузке страницы.

Выход области администратора:

Мне не нужно сортировать их по категориям в области администрирования, я просто добавлю новый столбец в список комментариев, который выводит категорию на всякий случай , возможно, будут моменты, когда мне нужно знать.


Внешний выход:

 //Create new template for this comment system and use get_template_part() //Or add it straight to post or page template $args = array( 'post_id' => $current_post_id, 'meta_query' => array( array( 'key' => 'my_comment_category', 'value' => 'review' ) ) ); $comments = new WP_Comment_Query( $args ); //Output while( $comments->have_comments() ) { $comments->the_comment(); //Output } else { //No comments output } 

Это вдохновляет моя обычная WP_Query() . Я предполагаю, что в WordPress есть согласованность, и все разные результаты запроса могут быть зациклированы одинаково и использовать довольно похожий код ( eg the_post() == the_comment() or have_posts() == have_comments() ).


  • Я не уверен, что ответ работает по умолчанию
  • Я не уверен, что вложенные комментарии работают по умолчанию
  • Я не уверен, что есть какие-то другие поблемы, которые я не вижу в данный момент

Думаю, сейчас правильный вопрос: стоит ли это? Будет ли он работать намного хуже, чем комментарии по умолчанию ? Любые альтернативы?


Есть еще вопросы или идеи? Хорошо, дайте мне знать, и я уточню вопрос.

Solutions Collecting From Web of "«Категории» для комментариев?"

Комментарии являются «ограниченными» в WordPress. У вас есть три разных типа для них, поскольку get_comment_type() отображается хорошо, и вы не можете расширить этот список.

Таким образом, добавление метаданных в ваши комментарии является самым простым и, вероятно, «самым стандартным» способом, чтобы отличать разные «типы» комментариев.

Обработка ввода комментариев и вывода остается в основном одинаковой, за исключением того, что вам нужно добавить мета-значение для некоторых из них. Как вы уже показали, это делается довольно легко.

Что касается ваших вопросов:

Стоит ли оно того?

Я думаю, что ваше решение является наилучшим способом, не слишком много перерабатывая базу данных, создавая новые структуры и тому подобное. Ваши решения просто не нужны. Мне это нравится, потому что это улучшает совместимость.

Будет ли он работать намного хуже, чем комментарии по умолчанию?

Я не думаю, что это будет хуже. Вы в основном просто добавляете еще один параметр в запрос базы данных / выполняете другое соединение, а базы данных быстро, как черт, для таких вещей. Попробуйте реализовать кеширование, когда вы получаете больше нагрузки на свой сайт, и он должен работать нормально.