Получение количества сообщений внутри цикла страницы категории продуктов WooCommerce - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь получить количество сообщений на странице моей категории продуктов l oop (Woocommerce), но это просто не работает. Кто-нибудь знает, почему?

Woocommerce использует один и тот же файл-архив-продукт. php для отображения как страницы магазина, так и страницы категории продукта. В моем архивном продукте. php я передал значение переменной с помощью функции Woocommerce до начала l oop:

do_action( 'woocommerce_before_shop_loop' );

$totalproducts = wc_get_loop_prop( 'total' );

woocommerce_product_loop_start();

if ( wc_get_loop_prop( 'total' ) ) {
    while ( have_posts() ) {
        the_post();
        wc_get_template_part( 'content', 'product') );
    }
}

woocommerce_product_loop_end();

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

<?php global $totalproducts; ?>

<div class="product-item" style="z-index: <?php echo $totalproducts; ?>;">
   content of the post
</div>

<?php $totalproducts = $totalproducts - 1; ?>

Для страницы магазина это работает отлично, но для страниц категорий продуктов это просто не не работает, переменная пуста. Если я повторю переменную до того, как l oop начнется в моем архивном продукте. php, он покажет количество сообщений из категории, поэтому он отлично работает для обеих страниц. Но я просто не могу получить переменную внутри l oop, особенно на страницах категорий. Кто-нибудь знает, почему это происходит?

Я что-то не так делаю?

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Возможно, используя глобальную переменную $wp_query и ее свойство post_count, заменив в вашем коде:

$totalproducts = wc_get_loop_prop( 'total' );

на это:

global $wp_query;

$totalproducts = wc_get_loop_prop( 'total' ) ? wc_get_loop_prop( 'total' ) : $wp_query->post_count;

Это могло бы работать лучше.

Также вы можете упростить эту строку:

<?php $totalproducts = $totalproducts - 1; ?>

с помощью:

<?php $totalproducts--; ?>
0 голосов
/ 06 августа 2020

Что ж, наконец-то я нашел решение своей проблемы.

Я адаптировал свой код и создал woocommerce. php в каталоге моей темы вместо замены продукта-архива. .

И тогда файл, наконец, получил переменную для страниц категорий товаров. Понятия не имею, почему это произошло.

...