У меня есть сайт, на котором есть строка Карусель совы, посвященная Еженедельным скидкам.
Я пытаюсь скрыть эту строку, если ни один продукт не указан как "В продаже". Это то, что я имею до сих пор, но что-то не работает, и я не могу понять, что. Спасибо за помощь.
// -----------------------------------------
// HIDE WEEKLY SPECIALS IF THERE ARE NO PRODUCTS
function weeklyspecials() {
$args = array(
'post_type' => 'product',
'posts_per_page' => 4,
'meta_query' => array(
'relation' => 'OR',
array( // Simple products type
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
),
array( // Variable products type
'key' => '_min_variation_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
)
)
);
$loop = new WP_Query( $args );
if ( ! $loop->have_posts() ) {
echo '<style>#weeklyspecials {display:none;}</style>';
}
wp_reset_postdata();
}
add_action ( 'wp_body_open', 'weeklyspecials' );
РЕДАКТИРОВАТЬ *** ПРОБЛЕМА РЕШЕНА
Оказалось, что моя проблема заключалась в том, что были скрытые продукты ПРОДАЖИ ... почему? Потому что их нет в наличии. Мне пришлось изменить массив с отношением AND, связанным со статусом акции, чтобы он покрывал все.
КОД РАБОТЫ:
// HIDE WEEKLY SPECIALS IF THERE ARE NO PRODUCTS
function weeklyspecials() {
$args = array(
'post_type' => 'product',
'posts_per_page' => 4,
'meta_query' => array(
'relation' => 'AND',
array(
'relation' => 'OR',
array( // Simple products type
'key' => '_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
),
array( // Variable products type
'key' => '_min_variation_sale_price',
'value' => 0,
'compare' => '>',
'type' => 'numeric'
)),
array( // Stock status
'key' => '_stock_status',
'value' => 'instock'
)
)
);
$loop = new WP_Query( $args );
if ( ! $loop->have_posts() ) {
echo '<style>#weeklyspecials {display:none;}</style>';
}
}
add_action ( 'wp_body_open', 'weeklyspecials' );
Спасибо за помощь!