Woocommerce — отображать количество заказов на избранные товары

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

Мой текущий код выглядит следующим образом:

function woo_featured_product_sales_qty( $atts, $content = null ) {
$args = shortcode_atts( array(
'status' => 'completed',
'meta_query' => array(
array(
'post_type' => 'product',
'meta_key' => '_featured',
'meta_value' => 'yes',
'order' => 'DESC'
)
),
), $atts );

$status_list = $args['status'];

$statuses = array_map( 'trim', explode( ',', $status_list ) );

$order_count = 0;

foreach ( $statuses as $status ) {

$status = str_replace( $status, 'wc-' . $status, $status );

$total_orders = wp_count_posts( 'shop_order' )->$status;

$order_count += $total_orders;
}
ob_start();

echo $order_count;

return ob_get_clean();
}

add_shortcode( 'featured_product_sales_qty', 'woo_featured_product_sales_qty' );

Этот код действительно показывает общее количество заказов, но в виде суммы. Что делать, чтобы он работал правильно? Как отобразить это количество заказов в соответствии с текущими представленными товарами?

1

Решение

Я бы упростил вещи и сделал бы простой WP_Query за эти посты:

function woo_featured_product_sales_qty( $atts, $content = null ) {
$args = shortcode_atts( array(
'status' => 'completed',
'meta_query' => array(
array(
'post_type' => 'product',
'meta_key' => '_featured',
'meta_value' => 'yes',
'order' => 'DESC'
)
),
), $atts );

$status_list = $args['status'];

$statuses = array_map( 'trim', explode( ',', $status_list ) );

$query_args = array(
'post_status' => $statuses,
'meta_query' => $args['meta_query'],
);
$posts = new WP_Query( $query_args );

return $posts->have_posts() ? $posts->found_posts : 0;
}

add_shortcode( 'featured_product_sales_qty', 'woo_featured_product_sales_qty' );
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]