WC_Shortcodes::product_categories() public WC 1.0
List all (or limited) product categories.
{} Это метод класса: WC_Shortcodes{}
Хуки из метода
Возвращает
Строку.
Использование
$result = WC_Shortcodes::product_categories( $atts );
- $atts(массив) (обязательный)
- Attributes.
Код WC_Shortcodes::product_categories() WC Shortcodes::product categories WC 5.0.0
public static function product_categories( $atts ) {
if ( isset( $atts['number'] ) ) {
$atts['limit'] = $atts['number'];
}
$atts = shortcode_atts(
array(
'limit' => '-1',
'orderby' => 'name',
'order' => 'ASC',
'columns' => '4',
'hide_empty' => 1,
'parent' => '',
'ids' => '',
),
$atts,
'product_categories'
);
$ids = array_filter( array_map( 'trim', explode( ',', $atts['ids'] ) ) );
$hide_empty = ( true === $atts['hide_empty'] || 'true' === $atts['hide_empty'] || 1 === $atts['hide_empty'] || '1' === $atts['hide_empty'] ) ? 1 : 0;
// Get terms and workaround WP bug with parents/pad counts.
$args = array(
'orderby' => $atts['orderby'],
'order' => $atts['order'],
'hide_empty' => $hide_empty,
'include' => $ids,
'pad_counts' => true,
'child_of' => $atts['parent'],
);
$product_categories = apply_filters(
'woocommerce_product_categories',
get_terms( 'product_cat', $args )
);
if ( '' !== $atts['parent'] ) {
$product_categories = wp_list_filter(
$product_categories,
array(
'parent' => $atts['parent'],
)
);
}
if ( $hide_empty ) {
foreach ( $product_categories as $key => $category ) {
if ( 0 === $category->count ) {
unset( $product_categories[ $key ] );
}
}
}
$atts['limit'] = '-1' === $atts['limit'] ? null : intval( $atts['limit'] );
if ( $atts['limit'] ) {
$product_categories = array_slice( $product_categories, 0, $atts['limit'] );
}
$columns = absint( $atts['columns'] );
wc_set_loop_prop( 'columns', $columns );
wc_set_loop_prop( 'is_shortcode', true );
ob_start();
if ( $product_categories ) {
woocommerce_product_loop_start();
foreach ( $product_categories as $category ) {
wc_get_template(
'content-product_cat.php',
array(
'category' => $category,
)
);
}
woocommerce_product_loop_end();
}
wc_reset_loop();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
}