Как изменить статус товаров, у которого нет изображения на "Черновик"?
Как поменять статус товара с "Опубликовано" на "Черновик", если у товара нет изображения.
Что необходимо прописать в условии?
add_filter( 'woocommerce_product_is_visible', function( $visible, $id ) {
if ( ! has_post_thumbnail( $id ) ) {
// change status
}
return $visible;
}, 10, 2 );
Ответы (1 шт):
Автор решения: Darth KYL
→ Ссылка
вы можете это сделать через функцию wp_update_post
if ( ! has_post_thumbnail( $id ) ) {
wp_update_post( [
'ID' => $id,
'post_status' => 'draft'
] );
}
если нужно исколючить все товары без изображения из запросов на фронте, то нужно использовать экшн pre_get_posts
add_action( 'pre_get_posts', 'products_pre_get_posts' );
function products_pre_get_posts( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->get( 'post_type' ) == 'product' ) {
$meta_query = (array) $query->get( 'meta_query' );
$meta_query[] = [
'key' => '_thumbnail_id',
'compare' => 'EXISTS'
];
$query->set( 'meta_query', $meta_query );
}
}