Ограничьте количество результатов из wpsc_start_category_query

Соблюдайте следующий код:

<ul> <?php wpsc_start_category_query(array('category_group'=>get_option('wpsc_default_category'),'show_thumbnails'=>get_option('show_category_thumbnails'))); ?> <li> <div> <div class="image"><?php wpsc_print_category_image(); ?></div> <div class="caption-title transparent_class"> <?php wpsc_print_category_name();?> </div> <div class="caption transparent_class"> <a href="<?php wpsc_print_category_url();?>" class="wpsc_category_link"><?php wpsc_print_category_name();?></a> <?php if(get_option('wpsc_category_description')) :?> <?php wpsc_print_category_description("<div class='wpsc_subcategory'>", "</div>"); ?> <?php endif;?> </div> </div> </li> <?php wpsc_end_category_query(); ?> </ul> 

В приведенном выше коде отображаются все мои категории продуктов в списке. Проблема с этим подходом заключается в том, что я не могу ограничить количество категорий, которые приводят к результату. Например, если я хочу отображать 4 случайные категории, но имею 6 в моей базе данных WP, то я не получу то, что хочу.

Есть ли альтернативный способ получить число x из всех возможных? Может быть, с WP_Query ?

Функция wpsc_start_category_query () в основном вызывает собственные функции WP get_terms (), которые используются для создания запроса wp:

$ category_list = get_terms ('wpsc_product_category', 'hide_empty = 0 & parent ='. $ category_id);

Поскольку WPEC использует настраиваемые типы сообщений, вы можете просто легко создавать свои собственные запросы, используя http://codex.wordpress.org/Function_Reference/get_terms

Но get_terms () не делает случайного, поэтому вы должны получить их все, а затем перетасовать массив в случайный порядок, а затем вывести первые 4 (любое число, установленное в $ max) для них. Поэтому, корректируя свой код макета, он должен быть:

 <ul> <?php //display random sorted list of wpsc product categories $counter = 0; $max = 4; //number of categories to display $terms = get_terms('wpsc_product_category'); shuffle ($terms); //makes list random if ($terms) { foreach($terms as $term) { $counter++; if ($counter <= $max) { ?> <li> <div> <div class="image"><img src="<?php echo wpsc_category_image($term->term_id); ?>" width="<?php echo get_option('category_image_width'); ?>" height="<?php echo get_option('category_image_height'); ?>" /></div> <div class="caption-title transparent_class"> <?php echo $term->name; ?> </div> <div class="caption transparent_class"> <a href="<?php get_term_link( $term->slug, 'wpsc_product_category' ); ?>" class="wpsc_category_link"><?php echo $term->name; ?></a> <?php if(get_option('wpsc_category_description')) :?> <?php echo '<div class="wpsc_subcategory">'.$term->description.'</div>'; ?> <?php endif;?> </div> </div> </li> <?php } } } ?> </ul> 

Я тестировал код и работал, как описано.