Saya mencoba mengatur jenis posting khusus setelah tutorial ini . Namun, saya agak bingung bagaimana cara menerapkannya update_post_meta()
. Tutorial menyarankan pola ini:
add_action('save_post', 'save_my_metadata');
function save_my_metadata()
{
global $post;
update_post_meta($post->ID, 'my_metadata', $_POST['my_metadata']);
}
Yang berhasil, tetapi memiliki efek buruk menambahkan metadata itu ke setiap posting, apakah itu milik jenis kustom ini atau tidak.
Saya sudah memasukkan di atas functions.php
dan saya menduga itu mungkin menjadi bagian dari masalah. Saya kira saya perlu membatasi tindakan 'save_post' hanya untuk memicu posting dari jenis khusus saya.
custom-post-types
Bobby Jack
sumber
sumber
Jawaban:
Itu seharusnya bekerja. Cukup ganti 'your_post_type' dengan nama jenis posting. Juga, sedikit fakta yang diketahui: kait 'save_post' melewati ID kiriman sebagai argumen.
EDIT
Saya memperbarui fungsi untuk mencerminkan komentar Jan. Jan terima kasih!
sumber
Jika Anda ingin menangani beberapa jenis posting, saya akan merekomendasikan pernyataan beralih dasar:
Kasing pada dasarnya sama dengan
if($post->post_type) == 'post_type_1') {}
Tapi tidak memerlukan beberapa blok if-else. Thedefault
blok di switch menangani kasus di mana jenis posting tidak di set kustom Anda.sumber
@John P Bloch dan @EAMann telah memberikan jawaban yang bagus sehingga jawaban saya juga:
Jelas itu berarti Anda memerlukan metabox khusus untuk dapat mengedit bidang juga. Berikut layar edit untuk konteks:
save_{$post_type}_post
"; untukmovie
jenis postingsave_movie_post
. Inilah yang harus Anda tambahkan kefunctions.php
file tema Anda atau di plugin di suatu tempat:Dengan itu Anda kemudian dapat menulis ulang kode asli Anda seperti itu (termasuk trik garis bawah dari # 1 di atas):
sumber
Secara pribadi, saya lebih suka mengikuti pola di bawah ini untuk menambahkan penangan meta khusus ke jenis posting. Dengan di bawah ini, Anda dapat menambahkan dukungan meta ke jenis posting dengan hanya menambahkan kunci dukungan ('subtitle' dalam contoh di bawah) ke array dukungan untuk jenis posting dengan memanggil add_post_type_support ('my_post_type', 'subtitle');
Semoga sesuatu seperti ini akan segera ditambahkan ke inti.
sumber
Sebelum memperbarui, periksa apakah postingan saat ini adalah tipe postingan Anda. Itu akan memastikan Anda tidak menyimpannya untuk semua posting.
Anda juga harus memeriksa input (yang tidak ada dalam contoh Anda) dan di samping itu, perlu diingat bahwa Anda mungkin hanya menambahkan tindakan ketika tipe posting itu aktif. Jika itu masalahnya, Anda tidak perlu memeriksa jenis posting nanti.
Mendapatkan jenis tulisan:
get_post_type()
atau$post->post_type;
sumber
Saya tidak bisa menjalankannya - tidak yakin apa yang saya lakukan salah - tetapi saya mencoba menggunakan kait post_updated alih-alih save_post - karena saya ingin nilai-nilai ini dimasukkan setelah postingan diperbarui sehingga saya dapat mengambil nilai dari bidang khusus lainnya .
sumber