Ketika saya membuat posting baru, tepat setelah mengklik "Tambah Baru" , ketika editor posting menunjukkan, alih-alih harus menggunakan dropdown dan memilih bidang khusus untuk digunakan, saya ingin memiliki beberapa input bidang khusus standar sudah openend.
Secara visual, alih-alih:
Saya ingin memiliki sesuatu seperti:
Saya tahu ada plugin untuk itu (CPT, Lebih banyak bidang, dll) tetapi saya ingin cara sederhana untuk melakukannya dengan fungsi dasar.
Saya mencoba sesuatu seperti ini (Saya menggunakan 'produk' jenis pos kustom):
function register_custom_fields( $post_ID ) {
global $wpdb;
if( !wp_is_post_revision( $post_ID ) ) {
add_post_meta( $post_ID, 'reference', '', true);
add_post_meta( $post_ID, 'price', '', true);
}
}
add_action('edit_product', 'register_custom_fields');
Tapi itu sepertinya tidak berhasil. Saya berpikir bahwa pengaitnya mungkin salah (karena edit_post
muncul setelah pembaruan), tetapi saya tidak melihat pengait untuk "pos baru" (tepat setelah pengguna mengklik "pos baru" di admin wp). Apakah ada ?
Atau mungkin seluruh idenya salah dan ada cara lain?
sumber
Ini adalah metode yang tepat untuk menambahkan dukungan bidang khusus (Anda tidak mendapatkan bidang kosong saat mengedit posting)
sumber
Anda harus menggunakan tindakan save_post dan mengisolasi operasi Anda dengan memeriksa jenis posting karena ini berjalan pada semua jenis posting. Jelas ada beberapa logika yang harus Anda bangun untuk membuatnya bekerja untuk Anda. Anda mungkin harus menetapkan bidang meta pos yang memeriksa apakah Anda telah menetapkan default satu kali sehingga pengguna Anda tidak akan frustrasi jika mereka ingin membiarkan kolom meta pos kosong.
Jika Anda ingin default menjadi nol (seperti yang terlihat pada contoh kode Anda), maka jangan membuat fungsi karena ini hanya menambah overhead dan kolom pos meta tidak diisi dengan nilai secara default.
sumber
Saya mencari untuk memiliki deskripsi meta unik untuk setiap pos kustom di situs WP yang saya kembangkan. Jadi saya juga mencari bidang khusus default dan mendarat di sini.
Saya tahu ini adalah posting yang cukup lama, tetapi saya pikir saya akan memposting jawaban sederhana yang saya temukan di mariokostelac.com .
kg adalah namespace saya, Anda dapat memberi nama fungsi yang Anda suka. Saya cukup baru untuk pengait dan pengubahsuaian WP secara umum, tapi saya yakin wp_insert_post adalah pengait yang Anda cari.
sumber
get_post_type()
. Juga, ketika melakukan perbandingan longgar, Anda harus menggunakan sintaks kondisi gaya YODA.get_post_type($post_id)
lebih baik daripada$_GET['post_type']
?'page' === $_GET['post_type']
. Lain, ketika Anda lupa satu=
Anda bisa berakhir dalam situasi di mana Anda menetapkan nilai daripada membandingkan dua nilai. Dan itu akan berakhir sebagai sampah di basis data Anda. Anda mungkin juga ingin menggunakan perbandingan===
jenis yang aman (apakah nilainyapage
? Dan adalah nilai tipestring
?)'page' === get_post_type($post_id)
?jika seseorang perlu mengambil bidang kustom dengan jenis posting saya meninggalkan kode di bawah ini seperti yang saya lakukan dan bekerja dengan baik untuk saya :)
} add_action ('wp_insert_post', 'awh_field_type');
sumber