Verschieben Sie Post in eine unterschiedliche Kategorie, wenn das Feld post_meta 0 oder 2 Tage alt ist?

wordpress.stackexchange https://wordpress.stackexchange.com/questions/7420

  •  16-10-2019
  •  | 
  •  

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

War es hilfreich?

Lösung

Wenn Sie die Abstimmungsprüfung für Ihren Zustand entfernen, dann bei Bedarf:

  1. 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.)
  2. Ändern Sie das Array (die Kategorie entfernen, die Sie nicht benötigen, fügen Sie das hinzu, den Sie tun).
  3. Setzen Sie Kategorien mit wp_set_post_categories() (Es wird alle Kategorien überschreiben, sodass diejenigen, die Sie aus dem Array entfernen, verschwunden sind)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top