iborisbelov
@iborisbelov
Веб-дизайнер, UX\UI

Как получить count значения в yith-compare?

Доброго вечера.
Есть плагин YITH-Compare
И с помощью него, как вы знаете, можно сравнивать товары.
Но у него нету встроенной функции счетчика.

К примеру у вишлиста есть.
<?php $wishlist_count = YITH_WCWL()->count_products();
echo $wishlist_count; ?>

Но если его поменять на наш лад, то ничего не выходит.
<?php $compare_count = YITH_Woocompare()->count_products();
echo $compare_count; ?>

Тут я подумал. Что у плагина есть виджет class.yith-woocompare-widget.php . Можно ли получить значение из виджета?
---
Попробовал просто взять и вывести
<?php global $yith_woocompare;
echo $yith_woocompare->obj->list_products_html(); ?>

Получил список товаров которые попали в сравнение
---
Нашел в файле class.yith-woocompare-frontend.php
foreach ( $this->products_list as $product_id ) {
                $product = $this->wc_get_product( $product_id );
                if ( ! $product )
	                continue;
                ?>

                    <a class="title" href="<?php echo get_permalink( $product_id ) ?>"><?php echo $product->get_title() ?></a>
                    <a href="<?php echo $this->remove_product_url( $product_id ) ?>" data-product_id="<?php echo $product_id; ?>" class="remove" title="<?php _e( 'Remove', 'yith-woocommerce-compare' ) ?>">x</a>

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

---

сделав <?php var_dump($product_id); ?>
получил 4 значения (которые как раз в сравнении висят)
int(38) int(134) int(136) int(135)

как теперь мне сделать лишь count из этого?
  • Вопрос задан
  • 1287 просмотров
Решения вопроса 1
iborisbelov
@iborisbelov Автор вопроса
Веб-дизайнер, UX\UI
Получилось! Кому интересно, как в Woocommerce сделать счетчик товаров в сравнении?

Нам понадобится плагин YITH WooCommerce Compare

1. Открываем файл class.yith-woocompare-frontend.php ( путь: plugins/yith-woocommerce-compare-premium/includes)
2. Редактируем строку 701. Удаляем все что с 701 по 711.
foreach ( $this->products_list as $product_id ) {
                $product = $this->wc_get_product( $product_id );
                if ( ! $product )
	                continue;
                ?>
                <li>
                    <a class="title" href="<?php echo get_permalink( $product_id ) ?>"><?php echo $product->get_title() ?></a>
                    <a href="<?php echo $this->remove_product_url( $product_id ) ?>" data-product_id="<?php echo $product_id; ?>" class="remove" title="<?php _e( 'Remove', 'yith-woocommerce-compare' ) ?>">x</a>
                </li>
            <?php
            }


И заменяем на

$count = 0;
            foreach ( $this->products_list as $product_id ) {
                $product = $this->wc_get_product( $product_id );
             $count++;
            }
            echo $count;
            return ob_get_clean();
        }

3. Далее мы вставляем следующее в то место где должен быть "счетчик для сравнения".
<?php global $yith_woocompare;
echo $yith_woocompare->obj->list_products_html(); ?>


Пример:

<li class="user-btn__item">
<a class="user-btn__link" href="/compare/">
<span class="hidden-md-down hidden-sm-down user-btn__name">Сравнение</span>
<span class="user-btn__icon fa fa-balance-scale user-btn__icon--compare">
<span class="user-btn__number"><?php global $yith_woocompare;
echo $yith_woocompare->obj->list_products_html(); ?></span> <!-- тут выводим значение --> 
</span>
</a>
</li>


Тем самым мы убрали, то что должно было бы использоваться в виджете. Это решение подойдет для тех, кто может пожертвовать виджетом, но зато у него будет вверху с краю счетчик сравнения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
maxxannik
@maxxannik
Сайты на WordPress + Интернет магазины WooCommerce
Заодно нужно отключить систему уведомлений о надоедлевом обновлении. Поставить свечку за упокой сайта в церкви. И дописать у себя в подписи "Профессиональный истребитель сайтов".

Первое правило мира WordPress - не меняй код ядра и 3-х лиц. Читай, трогай, но не меняй.

Можно просто прочитать, скопировать, сделать аккуратненький шорткод и воткнуть куда надо. Ниче не поломается. И все будет по кодексу.

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

* На правах утреннего юмора :)
Ответ написан
global $yith_woocompare;				
$arrayith = json_decode(json_encode($yith_woocompare), true);				
echo count($arrayith['obj']['products_list']);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы