cjstress
@cjstress
C#

Как сократить количество запросов WooCommerce в выводе категорий и сабкатегорий?

Хочу повторить такое -
5bb4c0e16909c977594340.png

Есть такой код
function wcstt_woocommerce_before_main_content()
{
    if (!is_shop()) {
        return;
    }

    $taxonomy = 'product_cat';
    $orderby = 'name';
    $show_count = 0;
    $pad_counts = 0;
    $hierarchical = 1;
    $title = '';
    $empty = 0;
    $args = array(
        'taxonomy' => $taxonomy,
        'orderby' => $orderby,
        'show_count' => $show_count,
        'pad_counts' => $pad_counts,
        'hierarchical' => $hierarchical,
        'title_li' => $title,
        'hide_empty' => $empty
    );

    $all_categories = get_categories($args);
    print_r($all_categories);
    ?>
    <div class="wcstt-categories">
        <?php
        foreach ($all_categories as $cat) {
            //print_r($cat);
            if ($cat->category_parent == 0) {
                $category_id = $cat->term_id;
                ?>
                <div class="wcstt-category">

                    <?php
                    $thumbnail_id = get_woocommerce_term_meta($cat->term_id, 'thumbnail_id', true);
                    $image = wp_get_attachment_image_url($thumbnail_id);
                    ?>
                    <img src="<?php echo $image ?>">

                    <a href="<?php echo get_term_link($cat->slug, 'product_cat') ?>"><?php echo $cat->name ?></a>

                    <?php

                    $args2 = array(
                        'taxonomy' => $taxonomy,
                        'child_of' => 0,
                        'parent' => $category_id,
                        'orderby' => $orderby,
                        'show_count' => $show_count,
                        'pad_counts' => $pad_counts,
                        'hierarchical' => $hierarchical,
                        'title_li' => $title,
                        'hide_empty' => $empty
                    );
                    $sub_cats = get_categories($args2);
                    if ($sub_cats) { ?>
                        <ul class="wcstt-subcategories">
                            <?php
                            foreach ($sub_cats as $sub_category) { ?>
                                <li class="wcstt-subcategory">
                                    <a href="<?php echo get_term_link($sub_category->slug, 'product_cat'); ?>">
                                        <?php echo $sub_category->name; ?>
                                    </a>
                                </li>
                                <?php
                            } ?>
                        </ul>
                        <?php
                    }
                    ?>
                </div>
                <?php
            }
        }
        ?>
    </div>
    <?php
}


Как сократить количество запросов?

Т.е. интересует то, как написать WP_Query чтобы категории приходили сразу со ссылками вместо get_term_link на каждую категорию и сабкатегорию? Возможно ли это в WP?
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Что мешает загрузить один раз как положено и положить подготовленный HTML в общий кэш на сутки?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы