Bagaimana cara Menambahkan Bidang Kustom ke Jenis Posting Kustom?

18

Oke, jadi saya telah mendaftarkan beberapa jenis pos kustom dan beberapa taksonomi. Sekarang, untuk kehidupan saya, saya tidak dapat menemukan kode yang saya butuhkan untuk menambahkan Bidang Kustom ke Jenis Posting Kustom saya.

Saya perlu drop down dan area teks baris tunggal. Tetapi saya juga perlu memiliki bidang terpisah untuk jenis posting. Jadi, katakanlah tipe posting satu memiliki 3 bidang dan tipe posting 2 memiliki 4 bidang tetapi bidangnya berbeda.

Setiap tips akan membantu saya telah melihat codex dan menemukan sesuatu tetapi tidak dapat memahami apa yang perlu saya tambahkan ke functions.phpfile saya

xLRDxREVENGEx
sumber

Jawaban:

19

Ini mungkin lebih rumit daripada yang Anda pikirkan, saya akan melihat menggunakan kerangka kerja:

Jika Anda ingin menulis sendiri, berikut adalah beberapa tutorial yang layak:

Wyck
sumber
1
sungguh akan sulit. Saya pikir itu akan sesederhana menambahkan kode register ke fungsi saya seperti yang kita lakukan dengan tipe posting dan taksonomi.
xLRDxREVENGEx
1
Saya akan menambahkan satu jawaban ini, tetapi tidak terlalu rumit. Tautan thinkvitamin.com sangat membantu menjelaskan cara menambahkan metabox dan menyimpannya. Tautan sltaylor.co.uk adalah tutorial yang luar biasa tentang penggunaan beberapa praktik pengkodean yang bagus. Kata hati-hati saya adalah berhati-hati saat menggunakan save_postkail. Ini disebut pada waktu yang aneh. Pastikan variabel WP_DEBUG disetel ke true untuk melihat potensi kesalahan yang muncul saat menggunakannya.
tollmanz
1
Hanya sebuah pembaruan, saya menggunakan tautan thinkvitamin dan itu sangat membantu dan itu adalah langkah mudah untuk menyiapkan bidang khusus
xLRDxREVENGEx
25

Tambahkan / edit supportsargumen (saat menggunakan register_post_type) untuk memasukkan layar custom-fieldsuntuk mengirim edit dari jenis tulisan khusus Anda:

'supports' => array( 
  'title', 
  'editor', 
  'excerpt', 
  'thumbnail', 
  'custom-fields', 
  'revisions' 
)

Sumber: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields

kubante
sumber
2
Bisakah Anda jelaskan mengapa ini bisa menyelesaikan masalah?
s_ha_dum
1
Ya, ini berhasil. Siapa yang tahu jawabannya. Bisakah Anda mengambilnya kembali? Salam,
Junaid Qadir
6
...lalu.........?
Markus
9

Meskipun Anda harus menambahkan beberapa validasi, tindakan ini tampaknya tidak rumit untuk versi WordPress saat ini.

Pada dasarnya Anda memerlukan dua langkah untuk menambahkan Bidang Kustom ke Jenis Posting Kustom:

  1. Buat metabox yang menampung Bidang Kustom Anda
  2. Simpan Bidang Kustom Anda ke database

Langkah-langkah ini dijelaskan secara global di sini: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

Contoh:

Tambahkan Bidang Kustom yang disebut "fungsi" ke Jenis Posting Kustom yang disebut "awalan-anggota tim".

Pertama tambahkan metabox:

function prefix_teammembers_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );

Jika Anda menambah atau mengedit "anggota tim awalan" add_meta_boxes_{custom_post_type}kail dipicu. Lihat http://codex.wordpress.org/Function_Reference/add_meta_box untuk add_meta_box()fungsinya. Dalam panggilan di atas add_meta_box()adalah prefix_teammembers_metaboxes_html, panggilan balik untuk menambahkan bidang formulir Anda:

function prefix_teammembers_metaboxes_html()
{
    global $post;
    $custom = get_post_custom($post->ID);
    $function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
    <label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}

Pada langkah kedua Anda memiliki bidang khusus Anda ke database. Saat menyimpan save_post_{custom_post_type}kail dipicu (sejak v 3.7, lihat: /programming/5151409/wordpress-save-post-action-for-custom-posts ). Anda dapat mengaitkan ini untuk menyimpan bidang khusus Anda:

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   
Bass Jobsen
sumber
"mengapa prefix_teammembers_save_post dipicu oleh add baru?" apakah Anda menemukan jawaban, saya juga menemukan pemicu fungsi tambahan yang tidak dapat saya ingat?
alex
"Tambahkan Bidang Kustom yang disebut 'fungsi" ke Jenis Posting Kustom yang disebut' awalan-anggota tim '. "Apa yang" disebut "artinya? Nama? Nama singular? Nama? Label? Mungkin itu string yang digunakan sebagai argumen pertama dalam register_post_type atau mungkin tidak peduli apa itu selama itu konsisten
arnoldbird
1

Ada berbagai plugin untuk kotak meta khusus dan bidang khusus. Jika Anda melihat plugin yang berfokus pada pengembang, maka Anda harus mencoba Meta Box . Ringan dan sangat kuat.

Jika Anda mencari tutorial tentang cara menulis kode untuk kotak meta / bidang khusus, maka ini adalah awal yang baik. Ini adalah bagian pertama dari rangkaian yang dapat membantu Anda memperbaiki kode agar mudah diperluas.

Anh Tran
sumber
-6
// slider_metaboxes_html , function for create HTML 
function slider_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high');
}

//add_meta_boxes_slider => add_meta_boxes_{custom post type}
add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );

Pengetahuan yang sempurna

DTIndia
sumber