Домой Каталог: Дополнения WP-Recall WP Access Ultimate Вывод стоимости тарифа и его скидки в произвольном месте
10ответ(ов) в теме
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
1
14:11
Версия WP-Recall: 16.16.0
Версия дополнения: 1.3.1

Здравствуйте!

Прошу помочь с выводом цены определенного тарифного плана (и его цены со скидкой, если она есть) и размера скидки в определенном месте сайта.

На сайте есть каталог товаров, который содержит описание и цены тарифного плана и есть контент который закрывается плагином WP Access Ultimate. Нужно вывести цену для определенного тарифа в определенной карточке товара, а также если есть скидка на продление, то указывается первоначальная цена как зачеркнутая и рядом цена со скидкой. Т.е. по сути как это реализовано в карточке товара WP Access Ultimate. Также если есть скидка, то строчкой ниже указывается например: Ваша скидка на подписку 5% или 10% или 15%, в зависимости от того какую скидку я указал для того или иного уровня доступа в настройках WP Access Ultimate.

Скриншоты по сути вопроса прилагаю.


0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
2
14:13

Все указанные данные можно вывести через php. У вас есть верстка, где все это требуется вывести?

0
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
3
14:13

Как я понимаю за это отвечает данный код:

<?php global $WAU_User; ?>
<li class="plan">
    <ul class="planContainer">
        <li class="title">
            <span <?php echo $tariff->is_best? 'class="bestPlanTitle"': ''; ?>><?php echo $tariff->tariff_name; ?></span>
        </li>
        <li class="price">
            <p <?php echo $tariff->is_best? 'class="bestPlanPrice"': ''; ?>>
                <?php if($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
                    <s><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?>
                <?php else: ?>
                    <?php echo $tariff->tariff_price; ?>
                <?php endif; ?>
                <span><?php echo rcl_get_primary_currency(1); ?></span>
            </p>
        </li>     
    </ul>
</li>

Но как правильно его применить в отдельном месте сайта? Просто вставка, нечего не выводит. И при этом, нужно чтобы тоже был вывод размера самой скидки, такой какая она указана в настройках.

Редакции сообщения
09.10.2018 11:18Андрей CSПричина: не указано
0
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
4
14:16

Андрей CS сказал(а)
Все указанные данные можно вывести через php. У вас есть верстка, где все это требуется вывести?

Да Андрей, есть. Код ниже, выводит цену которую я указываю в настройках темы для карточки товара. вот его нужно преобразовать к тому виду, о чем я писал выше. + это будет плюсом, что не придется менять цену в 2 местах. А будет достаточно изменить цену только в плагине WP Access Ultimate

  
    <?php
            $price = get_post_meta($post->ID, 'price', true);
?>
	<div class="product-price">
		<?php _e('Цена, руб', 'gpress'); ?>: 
		<span><?php echo esc_attr($price) ?></span>
	</div>
  

Редакции сообщения
06.10.2018 14:28Сергей КарабельниковПричина: не указано
09.10.2018 11:18Андрей CSПричина: не указано
0
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
5
21:03

Андрей, что скажите?

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
6
11:26

Если вам надо сформировать карточку какого то определенного тарифного плана, то его данные можно получить с помощью функции
wau_get_tariff() передав в нее идентификатор этого тарифного плана, например так:

$tariff = wau_get_tariff(1);

если же надо получить все тарифные планы определенного аккаунта доступа, то следует использовать функцию wau_get_tariffs(), передав в нее идентификатор доступа например так:
$tariffs = wau_get_tariffs(array('account_id'=>1));

и далее уже обрабатываете полученный результат в php и вставляете в свою верстку

0
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
7
15:12

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

Вот конструкция кода:

<?php if (is_single('90')) { ?>
		<?php $tariff = wau_get_tariff(10); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
		    <span><s><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
		    <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<?php } else if (is_single('323')) { ?>
		<?php $tariff = wau_get_tariff(11); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
		    <span><s><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
		    <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<?php } else {
      echo "<span>$price <i class='rcli fa-rub'></i></span>";
} ?>

Описание конструкции:

Если страница ID=90 (страница с 1 тарифным планом 1 уровня доступа) ->
Если пользователь имеет дисконт, тогда вывести ->
Цена, в руб: 1000 900 Р
Ваша скидка: 10%
Иначе вывести ->
Полную цену тарифного плана 1 уровня доступа 1 ->
Конец
Иначе если страница ID=323 (страница с 2 тарифным планом 1 уровня доступа) ->
Если пользователь имеет дисконт, тогда вывести ->
Цена, в руб: 2000 1800 Р
Ваша скидка: 10%
Иначе вывести ->
Полную цену тарифного плана 2 уровня доступа 1 ->
Конец
.... и т.д. тарифов всего 9.
Иначе вывести цену товара указанного на странице карточки товара.
Конец

Также я хотел бы вывести процент скидки не вручную, а через php. Размер скидки я указываю в настройках дополнения для каждого уровня доступа. Всего 3 уровня доступа. Какой нужно прописать переменную, чтобы размер скидки выводился в цифровом формате, но брался автоматически из настроек дополнения? Чтобы если я там изменю скидку, не пришлось лезть опять в код страницы.

Редакции сообщения
09.10.2018 15:15Сергей КарабельниковПричина: не указано
0
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
8
16:05

Общий код у меня получился такой:

<!-- Тариф Лесенка «Серебро» -->
<?php if (is_single('90')) { ?>
		<?php $tariff = wau_get_tariff(10); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
		    <span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
		    <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Лесенка «Серебро» -->

<!-- Тариф Лесенка «Золото» -->
<?php } else if (is_single('323')) { ?>
		<?php $tariff = wau_get_tariff(11); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
		    <span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
		    <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Лесенка «Золото» -->

<!-- Тариф Лесенка «Платина» -->
<?php } else if (is_single('322')) { ?>
		<?php $tariff = wau_get_tariff(12); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
		    <span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
		    <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Лесенка «Платина» -->

<!-- Тариф Уверенность «Серебро» -->
<?php } else if (is_single('321')) { ?>
		<?php $tariff = wau_get_tariff(4); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
		    <span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 5%</p>
		<?php else: ?>
		    <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Уверенность «Серебро» -->

<!-- Тариф Уверенность «Золото» -->
<?php } else if (is_single('92')) { ?>
		<?php $tariff = wau_get_tariff(1); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
			<span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 5%</p>
		<?php else: ?>
			<span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Уверенность «Золото» -->

<!-- Тариф Уверенность «Платина» -->
<?php } else if (is_single('320')) { ?>
		<?php $tariff = wau_get_tariff(3); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
			<span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 5%</p>
		<?php else: ?>
			<span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Уверенность «Платина» -->

<!-- Тариф Вызов букмекеру «Серебро» -->
<?php } else if (is_single('319')) { ?>
		<?php $tariff = wau_get_tariff(7); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
			<span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
			<span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Вызов букмекеру «Серебро» -->

<!-- Тариф Вызов букмекеру «Золото» -->
<?php } else if (is_single('103')) { ?>
		<?php $tariff = wau_get_tariff(9); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
			<span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
			<span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Вызов букмекеру «Золото» -->

<!-- Тариф Вызов букмекеру «Платина» -->
<?php } else if (is_single('317')) { ?>
		<?php $tariff = wau_get_tariff(8); ?>
		<?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
			<span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
		<?php else: ?>
			<span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
		<?php endif; ?>
<!-- Тариф Вызов букмекеру «Платина» -->

<!-- Вывод цены тарифа из поля "price" карточки товара -->
<?php } else {
      echo "<span>$price <i class='rcli fa-rub'></i></span>";
} ?>
<!-- Вывод цены тарифа из поля "price" карточки товара -->

Я уверен, что я его можно упростить. ❓

0
Андрей CS
не в сети 11 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16996
9
17:32

числовое значение размера скидки можно получить так:

wau_get_meta($tariff->account_id, 'account', 'uptime_discount')

Как я понял вы используете этот код в цикле шаблона, возможно, архива. Я бы написал такую функцию:
function the_single_post_tariffbox(){
    global $post;

    $tariffPosts = array(
        90 => 10,
        323 => 11,
        322 => 12,
        321 => 4,
        92 => 1,
        320 => 3,
        319 => 7,
        103 => 9,
        317 => 8
    );

    if(!isset($tariffPosts[$post->ID])) return false;

    $tariff_id = $tariffPosts[$post->ID];

    $tariff = wau_get_tariff($tariff_id); ?>

    <?php if ($tariff->tariff_price != $discount = wau_get_tariff_price($tariff->tariff_id)): ?>
            <span><s style="color:#333"><?php echo $tariff->tariff_price; ?></s> <?php echo $discount; ?> <i class="rcli fa-rub"></i></span> <p>Ваша скидка: 10%</p>
    <?php else: ?>
            <span><?php echo $tariff->tariff_price; ?> <i class="rcli fa-rub"></i></span>
    <?php endif; ?>

<?php }

и уже в шаблоне просто вывел
the_single_post_tariffbox();

Редакции сообщения
09.10.2018 17:34Андрей CSПричина: поправил код
1
Сергей Карабельников
не в сети 1 год
На сайте с 01.08.2016
Участник
Тем 7
Сообщения 66
10
21:14

Андрей, огромное спасибо!!! 8) 8) 8)

Красивый код и все работает! Вот значит, специалист своего дела. Еще раз большое спасибо! 😀 😛

Редакции сообщения
09.10.2018 21:14Сергей КарабельниковПричина: не указано
1
Тема закрыта. Публикация новых сообщений запрещена.