Проблема получения остатка количества билетов по ID мероприятия
Работаю с виджетом для продажи билетов в театрах https://afisharambler.helpdeskeddy.com/ru/knowledge_base/art/65/cat/9/api-sajta.
Сайт на WordPress. Задача состоит в том, что-бы когда заходишь на карточку мероприятия, то проверялось кол-во оставшихся билетов и выводилась одна из этих двух кнопок. "Купить билет" - если они остались, "Оставить заявку" - если их соответственно нет.
Есть две страницы:
- render-list-afisha.php, которая рендерит всю афишу через цикл:
foreach($listApi as $item) {
// Получаем название сцены (Малая или Основная)
$sceneVal = mb_strtolower($item['location_name']);
$sceneItem = '';
if (strpos($sceneVal, 'алая сце') === false) {
$sceneItem = 'Большая сцена';
} elseif (strpos($sceneVal, 'сновная') === false) {
$sceneItem = 'Малая сцена';
}
// Сопоставляем название с мероприятиями и если таковое существует то заменяем его
$havePage = false;
$idPost = false;
$titlePost = false;
foreach ($posts_titles as $id => $title) {
$afishaTitle = mb_eregi_replace("[^a-zа-яё0-9 ]", '',html_entity_decode( mb_strtolower( $item['name']) ));
$posts_title = mb_eregi_replace("[^a-zа-яё0-9 ]", '',html_entity_decode( mb_strtolower($title) ));
$posts_title = str_replace(' ', '', $posts_title);
$afishaTitle = str_replace(' ', '', $afishaTitle);
if(strpos( $afishaTitle, $posts_title ) !== false) {
$havePage = true;
$postArr = get_post($id);
$idPost = $id;
$titlePost = $title;
}
}
$isPremiere = get_post_meta($idPost, 'meropriyatieprimera', true) ? 'true' : 'false';
$isPushk = get_post_meta($idPost, 'meropriyatiepushkin', true) ? 'true' : 'false';
$isRec = get_post_meta($idPost, 'meropriyatierecommend', true) ? 'true' : 'false';
$sceneType = $sceneItem == 'Малая сцена' ? 'small' : 'large';
?>
<div class="playbill__item"
data-event-item
data-id="<?php echo $item['id'] ;?>"
data-scene="<?php echo $sceneType ;?>"
data-has-tickets="<?php echo $item['count'] ;?>"
data-is-premiere="<?php echo $isPremiere;?>"
data-is-pushk="<?php echo $isPushk;?>"
data-is-rec="<?php echo $isRec;?>"
data-date="<?php echo date('YmdHi',strtotime($item['date'])) ;?>"
data-name="<?php echo str_replace( '"', '', $item['name'] ) ;?>"
>
<div class="playbill__date <?php echo get_post_meta($idPost,'meropriyatiepushkin',true) ? 'playbill__date--pushkin' : '' ?>">
<div class="playbill__day"><?php echo date('j',strtotime($item['date']))?></div>
<div class="playbill__day-about">
<div class="playbill__month"><?php echo $_monthsList[date('m',strtotime($item['date']))]?></div>
<div class="playbill__time"><?php echo date('H:i',strtotime($item['date']))?></div>
<div class="playbill__weekday"><?php echo $_weekList[date('w',strtotime($item['date']))]?></div>
</div>
</div>
<a href="<?php the_permalink($idPost); ?>" class="apostthumb">
<?php if( has_post_thumbnail()):?>
<img src="<?php echo get_the_post_thumbnail_url($idPost, 'medium') ?>"/>
<?php else: ?>
<?php echo get_the_post_thumbnail($idPost, 'medium') ?>
<?php endif; ?>
</a>
<div class="playbill-buttons">
<?php if ($item['count'] > 0) {?>
<button onclick="listimWidget.openModal({event_id: <?php echo $item['id']?>})" class="ylwbutton">Купить билеты</button>
<?php } else {?>
<button class="btn playbill__btn btn playbill__btn--disabled">Оставить заявку</button>
<?php } ?>
<?php echo get_post_meta($idPost,'meropriyatiepushkin',true) ? '<div class="pushkin-list"><p class>Пушкинская карта</p></div>' : '' ?>
</div>
</div>
</div>
<?php } ?>
введите сюда код
Не важно, тут все работает как часы. Но во втором файле:
- single-meropriyatiya.php уже не работает сравнение $item['count'], точнее работает, но оно смотрит именно на кол-во билетов у первого мероприятия, которое нашлось.
Вот отрывок кода:
<?php if (get_field('cover_repertuar')): ?>
<section class="mainBanner mainBanner--play"
style="background: linear-gradient(to left, rgb(0 0 0 / 0%), rgb(0 0 0 / 73%)), url(<?php the_field('cover_repertuar'); ?>)">
<?php else: ?>
<section class="mainBanner mainBanner--play"
style="background: linear-gradient(to left, rgb(0 0 0 / 0%), rgb(0 0 0 / 73%)), url(<?php echo get_the_post_thumbnail_url($post->ID, 'full'); ?>)">
<?php endif; ?>
<div class="mainBanner__inner">
<div class="mainBanner__img-wrapper mainBanner__img-wrapper--blackout" style="display:none">
<img class="mainBanner__img" src="<?php echo get_the_post_thumbnail_url($post->ID, 'full'); ?>"
data-object-fit="contain" alt="Афиша спектакля <?php echo get_the_title() ?>">
</div>
<div class="bannerinfo newglass">
<h1><?php echo get_the_title() ?></h1>
<div class="metainfo">
<?php if( get_post_meta($post->ID, 'rezhiser', true) ):?>
<div class="genre"><?php echo get_post_meta($post->ID,'rezhiser',true)?></div>
<?php endif;?>
<?php if( get_post_meta($post->ID, 'zhanr', true) ):?>
<div class="genre"><?php echo get_post_meta($post->ID,'zhanr',true)?></div>
<?php endif;?>
<div class="genre"><?=wp_get_post_terms( $post->ID, 'tipu', array('fields' => 'all'))[0]->name?></div>
<?php if( get_post_meta($post->ID, 'long', true) ) : ?>
<div class="play__time"><?php echo get_post_meta($post->ID,'long',true)?></div>
<? endif; ?>
<?php if( get_post_meta($post->ID, 'meropriyatieperenos', true) ) : ?>
<span class="premier_tag"><?php echo get_post_meta($post->ID,'meropriyatieperenos',true)?></span>
<? endif; ?>
<?php if( get_post_meta($post->ID, 'meropriyatieprimera', true) ) : ?>
<span class="premier_tag">Премьера</span>
<? endif; ?>
<?php if( get_post_meta($post->ID, 'restriction', true) ) : ?>
<div class="parentcontrol"><?php echo get_post_meta($post->ID, 'restriction', true); ?></div>
<? endif; ?>
</div>
<?php if (get_field('description_glass')): ?>
<div class="description">
<?php the_field('description_glass'); ?>
</div>
<?php else: ?>
<div class="description">
<?php echo get_the_excerpt($post->ID) ?>
</div>
<?php endif; ?>
<div class="buttons">
<?php if ($i['count'] == 0) {?>
<button onclick="listimWidget.openModal({event_id: <?php echo $i['id']?>})" class="ylwbutton">Купить билеты</button>
<?php } else {?>
<button class="btn playbill__btn btn playbill__btn--disabled">Оставить заявку</button>
<?php } ?>
<!-- <div class="morebtn">Подробнее</div>-->
</div>
</div>
<div class="mainBanner__title-block" style="display:none;">
<div class="mainBanner__subtitle"><?php echo get_post_meta($post->ID, 'rezhiser', true) ?></div>
<div class="mainBanner__title"><?php echo get_the_title() ?></div>
<?php if (!empty($filterApiList)) { ?>
<a href="#afisha-list" style="margin-top: 20px;font-size: 1.2rem;padding: 1rem 1.4rem"
class="btn">Купить билет</a>
<?php } ?>
</div>
</div>
</section>
На синтаксические ошибки не обращайте внимания, кода больше, поэтому тут в спешке пытаюсь сократить как могу.
Ответы (1 шт):
Автор решения: Виктор Карев
→ Ссылка
Логика в коде: "Если билетов нет, то купить, иначе - оставить заявку".
<?php if ($i['count'] == 0) {?>
<button onclick="listimWidget.openModal({event_id: <?php echo $i['id']?>})" class="ylwbutton">Купить билеты</button>
<?php } else {?>
<button class="btn playbill__btn btn playbill__btn--disabled">Оставить заявку</button>
<?php } ?>