Вопрос или проблема
Итак, я создаю тему для WordPress и дошел до того момента, когда пытаюсь получить список отзывов, но HTML-шаблон по умолчанию comments_template()
не такой, как мне нужно.
У меня нет файла /comments.php
в корне темы, но я пытаюсь использовать это:
comments_template( 'single-product/reviews.php' );
Не знаю почему, но отображается код по умолчанию с изображениями аватаров и так далее. Мне это не нужно. В основном, мне нужно только их имя и 5 звезд (с помощью font-awesome). Я знаю, что у меня не так много кода, чтобы показать, так как я застрял на шаблоне комментариев. Даже если я попробую comments_template( '' );
, он отображает шаблон по умолчанию wp.
Эта функция комментариев вызывается из content-single-product.php
, если это что-то значит. Может быть, стоит отметить, что я строю это на основе underscores, это может иметь значение.
Стоит ли просто вручную закодировать раздел отзывов? Я только перечисляю отзывы и выводю форму, верно?
content-single-product.php
звучит как шаблон woocommerce, который находится здесь wp-content/plugins/woocommerce/templates
. Вы можете переопределить этот шаблон в своей теме или дочерней теме, создав файл wp-content/themes/your-theme/woocommerce/content-single-product.php
.
Ответ или решение
Создание темы для WooCommerce может быть сложной задачей, особенно когда речь идет о кастомизации секции отзывов. В вашем случае, вы столкнулись с проблемой вывода отзывов, и стандартная функция comments_template()
не предоставляет должного результата. Давайте рассмотрим, как можно решить эту проблему, сохранив при этом высокий уровень кастомизации и контроля.
1. Понимание структуры комментирования в WooCommerce
Сначала важно отметить, что WooCommerce использует систему комментариев WordPress для управления отзывами о товарах. По умолчанию, функция comments_template()
выводит стандартный шаблон комментариев. Поскольку вы указали, что у вас отсутствует файл comments.php
, функция не может загрузить его и продолжает использовать стандартный вывод.
Существует возможность переопределить стандартные шаблоны WooCommerce, включая секцию отзывов. Это можно сделать, создав свой файл в вашей теме или дочерней теме.
2. Создание кастомного шаблона для отзывов
Вы можете самостоятельно создать файл reviews.php
внутри папки woocommerce/single-product
вашей темы. Вот шаги, которые вам нужно выполнить:
-
Создайте нужную папку: В вашей теме создайте структуру папок, если её ещё нет:
wp-content/themes/your-theme/woocommerce/single-product/
-
Создание файла
reviews.php
: Создайте файлreviews.php
в этой папке. Этот файл будет использоваться для вывода отзывов и должен включать необходимую логику для отображения отзывов без лишних элементов, таких как аватары.Пример минимальной реализации:
<?php // Получаем все отзывы global $product; $comments = get_comments(array( 'post_id' => $product->get_id(), 'status' => 'approve', )); if ($comments) { echo '<ul class="product-reviews">'; foreach ($comments as $comment) { $rating = intval(get_comment_meta($comment->comment_ID, 'rating', true)); echo '<li>'; echo '<strong>' . esc_html($comment->comment_author) . '</strong>'; echo '<div class="star-rating" style="display:inline-block;">'; for ($i = 1; $i <= 5; $i++) { if ($i <= $rating) { echo '<span class="fa fa-star" style="color:gold;"></span>'; } else { echo '<span class="fa fa-star-o"></span>'; } } echo '</div>'; echo '<p>' . esc_html($comment->comment_content) . '</p>'; echo '</li>'; } echo '</ul>'; } else { echo '<p>' . __('Отзывов еще нет.', 'your-text-domain') . '</p>'; }
3. Использование функции comments_template()
Теперь, когда вы создали свой шаблон, вы можете использовать его в content-single-product.php
:
comments_template('woocommerce/single-product/reviews.php');
Это вызовет ваш кастомный файл вместо стандартного шаблона.
4. Возможные проблемы и их решение
Если ваш кастомный код всё еще не отображается правильно, убедитесь, что:
- Вы очистили кэш на сайте, если вы используете плагины кэширования.
- Проверили, нет ли ошибок в логах PHP (включите WP_DEBUG для отладки).
- Убедились, что ваш файл
reviews.php
корректно подключается.
Заключение
Создавая собственный шаблон для вывода отзывов, вы получите полный контроль над тем, как они будут отображаться. Это позволит избежать лишних элементов и предоставить пользователям именно то, что они хотят видеть. Также, эта методология соблюдает принцип модульности, что облегчает дальнейшую поддержку кода. Надеюсь, эта информация будет вам полезна в вашем проекте. Удачи в разработке!