Подскажите, как заменить нижеприведённый код вызова шорткода на аналогичный код, в котором используется WP_Query? Сам цикл я смогу построить на основе полученных данных из бд. Но как задать правильно запрос в базу данных, чтобы выбрать товары из категории sale_products или товары из product_category?
echo do_shortcode('[product_category category="computers"]');
или
echo do_shortcode('[sale_products per_page="12"]');
Цикл, в общем-то обычный WordPress, с учетом того, что тип поста - products, и не категории, а таксономии. Свойства товара (например, цена распродажи) содержатся в мета-полях.
Для теста создана пустая страница, использующая файл шаблона. В файле шаблона:
<?php
/*
Template Name: woo-test-632707
*/
echo '<h2>Товары категории "Фильмы"</h2>';
$args = array(
'post_type' => 'product',
'product_cat' => 'фильмы',
'posts_per_page' => -1
);
$wc_query = new WP_Query($args);
if ($wc_query->have_posts()) {
while ($wc_query->have_posts()) {
$wc_query->the_post();
?>
<p><?php the_title(); ?></p>
<?php
}
wp_reset_postdata();
}
else {
?>
<p><?php echo 'No Products'; ?></p>
<?php
}
echo '<h2>Товары на распродаже</h2>';
$args = array(
'post_type' => 'product',
'meta_key' => '_sale_price',
'meta_value' => '0',
'meta_compare' => '>=',
'posts_per_page' => 12
);
$wc_query = new WP_Query($args);
if ($wc_query->have_posts()) {
while ($wc_query->have_posts()) {
$wc_query->the_post();
?>
<p><?php the_title(); ?></p>
<?php
}
wp_reset_postdata();
}
else {
?>
<p><?php echo 'No Products'; ?></p>
<?php
}
?>
Результат здесь.
Подскажите пожалуйста ещё по этому шорткоду:
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();
но дело в том, что магазин находится ещё в разработке, а самые продаваемые товары уже выводятся в результате этого кода. Ведь товары ещё не продавались. Правильно ли я вывожу самые продаваемые товары?
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники