在指定时间后自动过期/删除自定义邮寄类型帖子

时间:2017-10-17 作者:bilcker

我知道有这个插件,但没有一个允许我在没有手动选择帖子内日期的情况下自动终止它们。我有许多用户发布到不同的CPT,我想在发布后的12小时内(大约)删除他们,而无需用户手动设置。我一直在研究最好的方法来做到这一点,并一直试图拼凑不同的建议来实现我的目标。我希望有人能给我指出正确的方向。

我知道我不在那里,但我也不知道接下来该怎么办。我很感激你能提供的任何意见。

对于这个示例,为了简单起见,我选择从一个特定的自定义pout类型开始。

首先,我基于https://www.elegantthemes.com/blog/tips-tricks/how-to-add-cron-jobs-to-wordpress

functions.php

add_action(\'wp\',\'alerts_cron\');

function alerts_cron(){
    if(!wp_next_scheduled(\'hpsts_alerts_cron\')){
        wp_schedule_event_time(time(), \'hourly\', \'hpsts_alerts_cron\');
    }
}
接下来我的动作函数this post 作为起点

add_action(\'hpsts_alerts_cron\',\'expire_cpt_alert\');
function expire_cpt_alert(){
    $args =  array (
        \'post_type\' => \'hp_dual_credit\',
        \'post_status\' => \'publish\'
    );

    $expire_query = new WP_Query($args);

    if($expire_query->have_posts()) {

        while($expiry_query->have_posts()) : $expire_query->the_post();

        //This is where I start to get lost, I know I want to expire after 12 hours however if my Cron runs hourly I could test better if this was  

        $publish_time = get_the_time(\'U\');
        $delete_time = $publish_time + 3600;
        $current_time = date(\'H\');

        if($current_time >= $delete_time){
            wp_delete_post(get_the_ID(), true);
        }

        endwhile;
    }
}

1 个回复
SO网友:socki03

好的,看来您对发布时间是unix时间戳有问题,但您当前的时间不是,它只是返回小时数。

$publish_time = get_the_time(\'U\'); // Returns our $publish time as a Unix timestamp
$delete_time = $publish_time + 43200; // 60 sec * 60 min * 12 hrs = 43,200 sec
$current_time = time(); // time is a the current time in a Unix timestamp

if ( $current_time >= $delete_time ) {
    wp_delete_post(get_the_ID(), true);
}

结束