it-swarm-id.com

Cara Mengatur Status Posting ke Konsep jika lebih lama dari hari ini

Dalam pertanyaan sebelumnya saya perlu menetapkan posting bertanggal masa depan (jenis posting khusus) yang dipublikasikan di save alih-alih menjadwalkannya.

Pada tanggal itu 'dijadwalkan' karena saya ingin menetapkannya sebagai konsep lagi. Saya sudah mencoba menghubungkan ke init dan membungkusnya jika memeriksa jenis posting. Saya pikir itu akan dibandingkan dengan waktu server dan kemudian mengatur status ke konsep jika lebih tua dari waktu server.

Sebagai garis besar kasar:

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

Di sini dan perbarui dengan beberapa kode yang saya kerjakan.

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' );

Ini mendapatkan posting yang saya butuhkan dan memberi saya waktu server tetapi tidak melakukan apa-apa melewati itu sejauh yang saya tahu.

2
curtismchale

Permintaan Anda tidak memberi Anda ID pos, itu memberi Anda seluruh pos. SELECT * mengembalikan semua kolom, ID, post_status, dll. Jadi pengaturan $my_post['ID'] = $a tidak melakukan apa pun untuk Anda dalam hal ini.

Coba gunakan: $my_post['id'] = $a->ID; sebagai gantinya. Itu harus secara akurat mengatur ID Anda sebelum Anda menelepon wp_update_post() dan Anda harus berbisnis.

Selain itu, saya tidak melihat masalah dengan apa yang Anda lakukan ... kecuali bahwa meminta basis data setiap kali situs dimuat pada akhirnya dapat membuat masalah kinerja. Saya akan mengatur pekerjaan chron per jam sebagai gantinya untuk mengotomatiskan proses ... maka itu tidak tergantung pada atau memperlambat lalu lintas pengguna.

1
EAMann