Gunakan kasus:
Saya memiliki jenis posting yang berhubungan dengan pertunjukan musik. 'Waktu tayang' direbut melalui tanggal publikasi pos yang diatur untuk beberapa waktu di masa mendatang. Saya telah menemukan fungsi yang mengambil posting blog tanggal mendatang dan meninggalkan tanggal tetapi menandai posting sebagai dipublikasikan di save tetapi belum dapat menemukan cara untuk menyesuaikannya untuk jenis posting kustom.
Fungsinya di bawah.
<?php
function setup_future_hook() {
// Replace native future_post function with replacement
remove_action('future_post','show', '_future_post_hook');
add_action('future_post', 'show', 'publish_future_post_now');
}
function publish_future_post_now($id) {
// Set new post's post_status to "publish" rather than "future."
wp_publish_post($id);
}
add_action('init', 'setup_future_hook');
?>
custom-post-types
init
curtismchale
sumber
sumber
remove_action
danadd_action
menelepon? Parameter kedua Anda'show'
, tetapi bukankah seharusnya itu fungsi yang Anda tambahkan atau hapus?Jawaban:
Luar biasa menggabungkan kedua jawaban dari Mike dan Jan saya datang dengan ini yang hanya bekerja pada jenis posting yang dimaksud. Kami tidak memerlukan persyaratan acara karena pengait 'future_show' hanya meraih jenis kiriman pertunjukan dan memperbarui itu.
sumber
Saya tidak bisa mengatakan dengan pasti karena saya tidak memiliki situs Anda untuk menguji dengan tetapi saya percaya Anda hanya perlu untuk menghapus
'show'
dariremove_action()
danadd_action()
panggilan. Thewp_publish_post()
fungsi agnostik sehubungan dengan jenis posting, setidaknya itulah yang tampak dari membaca kode. Jadi coba ini:Tentu saja jika Anda ingin membatasi hanya melakukan pertunjukan, Anda mungkin ingin melakukan sesuatu seperti ini (walaupun logikanya akan lebih rumit jika Anda memerlukannya untuk bekerja dengan jenis posting lain juga):
Semoga ini membantu?
sumber
Saya pikir tindakan ini dipanggil oleh
wp_transition_post_status
. Kode tersebut adalah:Jadi untuk posting normal di masa depan kait terakhir akan
future_post
, tetapi untuk tipe Anda akanfuture_show
atau apa pun tipe slug Anda.sumber
Jika yang ingin Anda lakukan adalah menambahkan tanggal tambahan untuk 'waktu tayang', mungkin lebih mudah untuk menambahkan kotak meta yang melakukan hal itu - menggunakan tanggal Publikasikan untuk menipu itu bisa berpotensi bermasalah, karena WordPress akan mengaturnya untuk Status "masa depan" setiap kali diperbarui dengan tanggal publikasi yang akan datang (saya pikir), jadi Anda harus mengaitkan setiap kali posting diperbarui untuk mengaturnya kembali. Juga, dengan begitu Anda dapat memesan "Tanggal Penerbitan" untuk apa yang dimaksudkan.
Saya mungkin hanya akan menggunakan
meta_key
, dan kotak meta khusus. Meskipun itu tergantung seberapa kompleks kueri Anda yang menunjukkan pos.Jika Anda menetapkan meta_value sebagai timestamp, Anda dapat memesan berdasarkan tanggal waktu acara tetap, atau memilih sebelum / setelah tanggal tertentu:
$events = get_posts( 'post_type=events&meta_key=show_time&meta_value=' . strtotime( '+1 week' ) . '&meta_compare=<&orderby=meta_value' );
Akan mendapatkan semua "acara" dengan waktu tayang paling lambat seminggu dari tanggal saat ini. Catatan: Di atas tidak teruji, tetapi harus bekerja :)
sumber
WP Dev Nacin menggunakan fungsi sederhana menimpa:
sumber