sql - Make product posts draft if post meta field equals value -
i have function runs daily want check if post expired (based on custom postmeta field) , if set post status draft. think have principle right there's pretty wrong syntax isn't making work correctly. function far:
function make_product_draft( ) { global $wpdb; $sql = " update $wpdb->posts innerjoin $wpdb->postmeta on $wpdb->posts.id = $wpdb->postmeta.post_id set $wpdb->posts.post_status = 'draft' $wpdb->posts.post_type = 'product' , $wpdb->posts.post_status = 'publish' , $wpdb->postmeta.post_type = 'expired' "; $wpdb->query($sql); }
i think going wrong when this: $wpdb->posts.id? not sure correct syntax is. appreciated :)
my requirements changed since made post, following code worked me. niklaz comment, assistance pivotal in getting working right :)
function make_product_draft( ) { global $wpdb; $sql = "update {$wpdb->posts} inner join {$wpdb->postmeta} on {$wpdb->posts}.id = {$wpdb->postmeta}.post_id set {$wpdb->posts}.post_status = 'draft' {$wpdb->posts}.post_type = 'product' , {$wpdb->posts}.post_status = 'publish' , {$wpdb->postmeta}.meta_key = '_product_expiry' , {$wpdb->postmeta}.meta_value < curdate() "; $wpdb->query($sql); }
Comments
Post a Comment