Verschieben Sie Post in eine unterschiedliche Kategorie, wenn das Feld post_meta 0 oder 2 Tage alt ist?
Frage
Ist es möglich, einen Beitrag in eine andere Kategorie zu verschieben, wenn post_meta -Feld 0 ist?
Ich erstelle eine umgekehrte Auftragsabstimmung, jeder Beitrag hat standardmäßig 10 Stimmen und beseitigt nach einer Benutzerabstimmung eine Stimme, indem ich die Post_meta aktualisiert habe. Jetzt versuche ich, den Beitrag in eine andere Kategorie zu verschieben, wenn das Feld der Stimmen 0 oder 2 Tage beträgt alt.
Ich habe eine Lösung gefunden hier Dies verschiebt einen Beitrag in eine andere Kategorie, wenn in der Datenbank ein früheres Datum von diesem ist.
Es läuft jede Stunde, um den Scheck auszuführen
if (!wp_next_scheduled('sfn_expire_hook')){
wp_schedule_event( time(), 'hourly', 'sfn_expire_hook');
}
add_action( 'sfn_expire_hook', 'sfn_show_expire');
function sfn_show_expire(){
global $wpdb;
$server_time = date('mdy');
$result = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'");
if( !empty($result)) foreach ($result as $a){
$show_time = get_the_time('mdy', $a->ID);
if ( $server_time > $show_time ){
$my_post = array();
$my_post['ID'] = $a->ID;
$my_post['post_status'] = 'draft';
wp_update_post( $my_post );
}
} // end foreach
}
Kann mir jemand helfen, dies zu erweitern, um 2 Tage alte Beiträge zu überprüfen, und wenn post_meta "Stimmen" auch "0" ist?
Vielen Dank,
Philip
Lösung
Wenn Sie die Abstimmungsprüfung für Ihren Zustand entfernen, dann bei Bedarf:
- Kategorien holen mit
wp_get_object_terms()
(Low Level Func können Sie nur angeben, um Namen oder IDs abzurufen, da Sie dafür keine vollständigen Objekte benötigen.) - Ändern Sie das Array (die Kategorie entfernen, die Sie nicht benötigen, fügen Sie das hinzu, den Sie tun).
- Setzen Sie Kategorien mit
wp_set_post_categories()
(Es wird alle Kategorien überschreiben, sodass diejenigen, die Sie aus dem Array entfernen, verschwunden sind)