我创建了一个名为“class_availability_dates”的自定义POST元值,如果此值小于今天的日期,我尝试使用此元值使WooCommerce产品过期。
需要注意的一些事项:'class_availability_dates'被格式化(Y-m-d) - OR的原因是因为还有产品在技术上也有class_availability_dates,但它只是一个空字符串。 (*这适用于不会过期的产品)
这是我的wp-cron和回调函数:
//function for class expiration wp-cron (*based on class_availability_dates)
function delete_expired_classes_daily() {
if (!wp_next_scheduled('delete_expired_classes')) {
wp_schedule_event(time(), 'daily', 'delete_expired_classes');
}
}
add_action('wp', 'delete_expired_classes_daily');
//function for class expiration
function delete_expired_classes_callback() {
//get todays date
$today = date('Y-m-d');
$args = array(
'post_type' => 'product',
'posts_per_page' => -1,
'meta_key' => 'class_availability_dates',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'class_availability_dates',
'value' => $today,
'type' => 'CHAR',
'compare' => '<='
),
array(
'key' => 'class_availability_dates',
'value' => ' ',
'type' => 'CHAR',
'compare' => '!='
)
)
);
$classes = new WP_Query($args);
if($classes->have_posts()) :
while($classes->have_posts()) :
wp_delete_post(get_the_ID());
endwhile;
endif;
}
add_action('delete_expired_classes', 'delete_expired_classes_callback');
我哪里错了?我有一个类似的功能,它适用于WP管理员端基于class_availability_dates对产品进行排序 - 但我似乎无法弄清楚到期方面。
非常感谢任何帮助。谢谢。