У меня есть настройка woocommerce, которая импортирует продукты каждую ночь, обновляет текущие и создает новые, если их нет в установке. Новые продукты, созданные в результате импорта, не должны отображаться во внешнем интерфейсе. Я настроил его так, чтобы продукты без изображений не показывались в запросе продукта, однако они все еще отображаются в поиске продуктов, что является проблемой.
Моя идея для лучшего решения - изменить publi sh статус продуктов на основе даты создания, а затем установите статус publi sh как «черновик», чтобы они не были видны.
Вот что у меня есть:
add_action( 'woocommerce_before_shop_loop_item_title', 'display_new_loop_woocommerce' );
function display_new_loop_woocommerce() {
global $product;
$id = $product->get_id();
$status = 'publish';
// Get the date for the product published and current date
$datetime_created = $product->get_date_created(); // Get product created datetime
$timestamp_created = $datetime_created->getTimestamp(); // product created timestamp
$datetime_now = new WC_DateTime(); // Get now datetime (from Woocommerce datetime object)
$timestamp_now = $datetime_now->getTimestamp(); // Get now timestamp
$time_delta = $timestamp_now - $timestamp_created; // Difference in seconds
$time = 60 * 24 * 60 * 2; // X AMOUNT OF SECONDS TIMES DAYS
// If the difference is less than TIME, apply draft status
if ( $time_delta < $time ) {
$status = 'draft';
}
$my_post = array(
'ID' => $id,
'post_status' => $status
);
// Update the post into the database
wp_update_post( $my_post );
}
Это не работает полностью - статус изменится на «publi sh», но не на «черновик», так что что-то есть в условное это неверно. Если я попытаюсь повторить что-то в условном выражении и удаляю части, касающиеся обновления статуса публикации, все работает нормально.
Любая помощь будет принята с благодарностью - даже идея для лучшего подхода к проблеме.