По сути, я пытаюсь отобразить оценки (используя плагин kk star rating) для разных прошлых бронирований в моем плагине. Я использую do_shortcode()
для разных бронирований с разными идентификаторами. Это отражено в частичном файле.
<?php
/* GIVE RATINGS IF NOT ALREADY GIVEN */
if ($ratings_possible) {
echo do_shortcode("[kkstarratings id=" . $booking->id . "]");
?>
Здесь $booking->id
предоставляет уникальный номер идентификатора бронирования, на основании которого я пытаюсь получить уникальный рейтинг для каждого бронирования.
Проблема
В настоящее время основной файл запускается l oop три раза, и этот фрагмент отлично отображает звезды, но последний из этих трех звездочек действительно работает. Последний принимает оценки и обновляет среднее значение, но первые два не работают. Мы можем навести курсор на все звёздочки и щелкнуть, но на самом деле работает только последний из них.
Я также использовал метод kk_star_ratings()
, но тот же результат.
Подробнее
Следующее является частью кода dashboard.php
. Он отображает каждую встречу / бронирование клиента. Здесь $customer->future_bookings
отображает предстоящие заказы (где, очевидно, $ratings_possible
установлено в false). Однако на $customer->past_bookings
я установил для $ratings_possible
значение true. Затем следует частичный файл, который отвечает за каждую деталь бронирования, например, include('_booking_tile.php');
панель инструментов. php
<div class="customer-bookings-tiles">
<?php
foreach($customer->future_bookings as $booking){
$editable_booking = true;
$ratings_possible = false;
include('_booking_tile.php');
} ?>
</div>
<?php } ?>
<?php
if($customer->past_bookings){ ?>
<div class="latepoint-section-heading-w">
<h5 class="latepoint-section-heading"><?php _e('Past '.$appointterm, 'latepoint'); ?></h5>
<div class="heading-extra"><?php printf( __('%d '.$appointterm, 'latepoint'), count($customer->past_bookings)); ?></div>
</div>
<div class="customer-bookings-tiles">
<?php
foreach($customer->past_bookings as $booking){
$editable_booking = false;
$ratings_possible = true;
include('_booking_tile.php');
} ?>
</div>
Теперь, на _booking_tile.php
, он содержит детали каждого бронирования, такие как агент, время, статус и т. д. c. Через $booking
объект мы получаем переменные конкретного бронирования и их значения и все. Вот некоторая часть кода:
_booking_tile. php
<div class="customer-booking-info-row">
<span class="booking-info-label"><?php _e($agentterm, 'latepoint'); ?></span>
<span class="booking-info-value"><?php echo $booking->agent->full_name; ?></span></div>
<div class="customer-booking-info-row">
<span class="booking-info-label"><?php _e('Status', 'latepoint'); ?></span>
<span class="booking-info-value status-<?php echo $booking->status; ?>"><?php echo $booking->nice_status; ?></span></div>
</div>
<?php if ($editable_booking) { ?>
<div class="customer-booking-buttons">
<a href="<?php echo $booking->ical_download_link; ?>" target="_blank" class="latepoint-btn latepoint-btn-primary latepoint-btn-link">
<i class="latepoint-icon latepoint-icon-ui-83"></i>
<span><?php _e('Add to Calendar', 'latepoint'); ?></span>
</a>
<?php /* <a href="#" class="latepoint-btn"><i class="latepoint-icon latepoint-icon-ui-46"></i><span><?php _e('Edit', 'latepoint'); ?></span></a> */ ?>
<a href="#" class="latepoint-btn latepoint-btn-danger latepoint-request-booking-cancellation latepoint-btn-link" data-route="<?php echo OsRouterHelper::build_route_name('bookings', 'request_cancellation'); ?>">
<i class="latepoint-icon latepoint-icon-ui-24"></i>
<span><?php _e('Cancel', 'latepoint'); ?></span>
</a>
</div>
<?php } ?>
<?php /* GIVE RATINGS IF NOT ALREADY GIVEN */
if ($ratings_possible) {
echo do_shortcode("[kkstarratings id=" . $booking->id . "]");
?>
<?php } ?>
Результирующий HTML код отлично работает, каждый звездный рейтинг (kk star plugin) ) имеет идеальный код, имеет уникальные идентификаторы, что означает, что он должен работать нормально. Более того, как я уже говорил, когда я вставляю три шорткода с разными идентификаторами, он отлично работает.
Звезды отображаются отлично, но на самом деле работает только третий. Когда я нажимаю третий, он записывает мой рейтинг и отображает среднее значение. В то время как первые два не.
- Звезды работают, когда я вставляю их шорткоды вручную через WordPress. Таким образом, это означает, что возможно несколько шорткодов с идентификаторами.
- Автор предоставляет функцию
kk_star_rating()
, которую можно использовать в коде, но это дает тот же результат. - Работает только последняя звезда просто ничего не записываем. Все три имеют одинаковый HTML код, за исключением идентификаторов, которые будут уникальными.
Я буду рад ответить на другие ваши вопросы.
Вот скриншот, третий дает мне результат, когда я нажимаю. Но я могу только навести курсор на первые два и щелкнуть несколько раз без результата.
Снимок экрана