it-swarm.asia

Bugünden daha eskiyse Gönderi Durumu Taslağa Nasıl Ayarlanır

Önceki bir soruda, gelecekteki tarihli bir yazı (özel yazı türü) planlamak yerine kaydetmeden yayınlanacak şekilde ayarlamam gerekiyordu.

O tarihte yeniden planlanacak olan için planlanmış. Ben init'e bağlamaya ve post tipi olup olmadığını kontrol etmek için sarmaya çalışıyorum. Sunucu zamanı ile karşılaştırılacağını düşündüm ve ardından sunucu zamanından daha eskiyse durumu taslak olarak ayarladım.

Kaba bir taslak olarak:

if custom post type
  get_the_time of post
  get the server time
  if post time is older than server time set status to draft
endif

İşte ve çalıştığım bazı kodlarla güncelle.

function sfn_show_expire(){
    global $wpdb;
    $server_time = date('mdy');
    $result = $wpdb->get_results("SELECT * FROM wp_posts WHERE post_type = 'show' 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
}
add_action( 'init', 'sfn_show_expire' );

İhtiyacım olan mesajları alıyor ve bana sunucuya zaman veriyor ama söyleyebileceğim kadarıyla hiçbir şey yapmıyor.

2
curtismchale

Sorgunuz size bir posta kimliği vermiyor, size tam bir yazı veriyor. SELECT *, ID, post_status vb. Tüm sütunları döndürür. Bu nedenle, $my_post['ID'] = $a ayarı bu durumda sizin için hiçbir şey yapmaz.

Bunun yerine: $my_post['id'] = $a->ID; kullanmayı deneyin. Bu, wp_update_post() işlevini çağırmadan önce kimliğinizi doğru bir şekilde belirlemeli ve işinizde olmalıdır.

Bunun dışında ne yaptığınızla ilgili bir sorun görmüyorum ... site her yüklendiğinde veritabanını sorgulamak dışında sonuçta performans sorunları yaratabilir. Süreci otomatikleştirmek yerine saatlik bir chron işi ayarladım ... o zaman kullanıcı trafiğine bağlı değil ya da yavaşlamıyor.

1
EAMann