cron - wp delete duplicate entries of custom post types every 15 minutes

looking for some assistance.I have searched the usual sites but not come across this specific question and was wondering

looking for some assistance.

I have searched the usual sites but not come across this specific question and was wondering if anybody could help. I have a scrape system that collects data and saves it to my database in wordpress. It is saving the track history for a radio station. Unfortunately I am getting double ups which I can't fix. I'd like to run a cron job that reviews the last 30 entries for that custom post type (track) and if it finds any duplicates it deletes all but the oldest.

The image shows an example of the issue.

The tracks highlighted in blue need to be deleted automatically by the system as they aren't needed.

So in summary Cron needs to run every 15 minutes. It needs to look for the last x entries (maybe 30). It needs to look for any duplicates. It needs to delete all but the oldest of those that it finds (that keeps the information about when it first played). This should be a very light job to avoid high cpu.

Any help would be much appreciated.

Thanks

looking for some assistance.

I have searched the usual sites but not come across this specific question and was wondering if anybody could help. I have a scrape system that collects data and saves it to my database in wordpress. It is saving the track history for a radio station. Unfortunately I am getting double ups which I can't fix. I'd like to run a cron job that reviews the last 30 entries for that custom post type (track) and if it finds any duplicates it deletes all but the oldest.

The image shows an example of the issue.

The tracks highlighted in blue need to be deleted automatically by the system as they aren't needed.

So in summary Cron needs to run every 15 minutes. It needs to look for the last x entries (maybe 30). It needs to look for any duplicates. It needs to delete all but the oldest of those that it finds (that keeps the information about when it first played). This should be a very light job to avoid high cpu.

Any help would be much appreciated.

Thanks

Share Improve this question asked Aug 18, 2019 at 22:10 vinyllickervinyllicker 11
Add a comment  | 

1 Answer 1

Reset to default 0

Start by ensuring that there is actually a 15min interval available.

// create the cron scheduled interval to be used
add_filter('cron_schedules','ex11_cron_schedules');
function ex11_cron_schedules($schedules){
    if(!isset($schedules["15min"])){
        $schedules["15min"] = array(
            'interval' => 15*60,
            'display' => __('Once every 15 minutes'));
    }
    return $schedules;
}

Then create a custom WP_Query loop to fetch all the records you need to compare, and archive those you no longer need (your duplicates):

// I haven't tested this yet. You might need to fine tune it.
// You might also need to tune the query statements to suit the Track CPT
function wpse_archive_duplicate_tracks(){
    $args = array( 'post_type'=>'track','pust_status'=>'publish');
    $tracks = get_posts($args);
    $tracks_to_keep = array();

    foreach($tracks as $track){
        if (array_key_exists($track->artist . '~' .$track->post_title, $tracks_to_keep)){                
            $toUpdate = array(
                'ID' = $track->ID,
                'post_status' = 'archive', // change to 'trash' to delete
               );
            wp_update_post($toUpdate);
    } else {
         $tracks_to_keep[$track->artist . '~' .$track->post_title] = $track;
    }
}

Finally, you need to schedule your archival function:

wp_schedule_event(time(), '15min', 'wpse_archive_duplicate_tracks');     

Parting thought: You might also want to consider adding a meta_data field to the tracks you have already checked, so you don't have to check them ALL every time. But ... this might not suit your situation, if duplicates can come back anytime.

Good luck!

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745209972a4616777.html

相关推荐

  • cron - wp delete duplicate entries of custom post types every 15 minutes

    looking for some assistance.I have searched the usual sites but not come across this specific question and was wondering

    4小时前
    40

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信