Несколько шорткодов на одной странице не работают - PullRequest
0 голосов
/ 23 января 2020

По сути, я пытаюсь отобразить оценки (используя плагин 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 код, за исключением идентификаторов, которые будут уникальными.

Я буду рад ответить на другие ваши вопросы.

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

Снимок экрана

1 Ответ

0 голосов
/ 07 февраля 2020

Это была какая-то проблема с плагином. Он не был совместим с новейшей версией WordPress. Использовал другой плагин, и он работал нормально. Вызов нескольких коротких кодов через al oop работал отлично.

Спасибо всем, кто пытался помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...