WooCommerce - 基于自定义元值的产品到期

时间:2015-10-09 16:27:47

标签: php wordpress woocommerce

我创建了一个名为“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对产品进行排序 - 但我似乎无法弄清楚到期方面。

非常感谢任何帮助。谢谢。

0 个答案:

没有答案