Подскажите, как заменить этот код шорткода на аналогичный код, в котором используется WP_Query?
echo do_shortcode('[best_selling_products per_page="12"]');
я делал так:
$args = array( 'post_type' => 'product', 'posts_per_page' => 12, 'meta_key' => 'total_sales', 'orderby' => 'meta_value_num', ); $wc_query = new WP_Query($args); if ($wc_query->have_posts()) { while ($wc_query->have_posts()) { $wc_query->the_post(); woocommerce_product_loop_start(); wc_get_template_part( 'content', 'product' ); woocommerce_product_loop_end(); } } wp_reset_postdata();
но дело в том, что магазин находится ещё в разработке, а самые популярные товары уже выводятся в результате этого кода. Ведь товары ещё не продавались. Правильно ли я вывожу самые продаваемые товары?
Код правильный. Он выводит записи типа product
по 12 на страницу, сортируя их по мета-полю total_sales
. Пока продаж нет, у всех товаров это поле равно 0.
Значение мета-поля total_sales
можно вывести в цикле после wc_get_template_parts
, например:
echo get_post_meta(get_the_ID(), 'total_sales')[0];
Чтобы вывести товары, у которых число продаж больше заданного (в примере > 0), можно использовать meta_query
. Два варианта цикла ниже.
echo '<h2>Самые продаваемые циклом woocommerce</h2>';
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 12,
'meta_key' => 'total_sales',
'orderby' => 'meta_value_num',
);
$wc_query = new WP_Query($args);
if ($wc_query->have_posts()) {
while ($wc_query->have_posts()) {
$wc_query->the_post();
woocommerce_product_loop_start();
wc_get_template_part( 'content', 'product' );
echo 'Кол-во продаж: ' . get_post_meta(get_the_ID(), 'total_sales')[0];
woocommerce_product_loop_end();
}
}
wp_reset_postdata();
echo '<h2>Самые продаваемые циклом woocommerce с ограничением</h2>';
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 12,
'orderby' => 'meta_value_num',
'meta_query' => array(
array( // Simple products type
'key' => 'total_sales',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
),
),
);
$wc_query = new WP_Query($args);
if ($wc_query->have_posts()) {
while ($wc_query->have_posts()) {
$wc_query->the_post();
woocommerce_product_loop_start();
wc_get_template_part( 'content', 'product' );
echo 'Кол-во продаж: ' . get_post_meta(get_the_ID(), 'total_sales')[0];
woocommerce_product_loop_end();
}
}
wp_reset_postdata();
Результат теста здесь.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я думаю что многие знают способ минификации html с помощью php:
Друзья помогите реализовать корзину на PHPАлгоритм таков Администратор сайта добавляет товар через админку ,а затем товар попадает в базу...
Как сейчас правильно указывать, что функция выбрасывает исключения? Писать throw(