แม้ว่าคุณควรจะต้องเพิ่มการตรวจสอบความถูกต้อง แต่การกระทำนี้ดูเหมือนจะไม่ซับซ้อนสำหรับ WordPress เวอร์ชั่นปัจจุบัน
โดยทั่วไปคุณต้องมีสองขั้นตอนในการเพิ่มฟิลด์ที่กำหนดเองลงในประเภทโพสต์ที่กำหนดเอง:
- สร้าง metabox ที่เก็บฟิลด์ที่คุณกำหนดเอง
- บันทึกฟิลด์ที่คุณกำหนดเองลงในฐานข้อมูล
ขั้นตอนเหล่านี้มีการอธิบายทั่วโลกที่นี่: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
ตัวอย่าง:
เพิ่มเขตข้อมูลที่กำหนดเองที่เรียกว่า "ฟังก์ชั่น" ไปยังประเภทโพสต์ที่กำหนดเองที่เรียกว่า "prefix-teammembers"
ขั้นแรกให้เพิ่มเมท็อกซ์:
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' );
หากคุณเพิ่มหรือแก้ไข "คำนำหน้า -membersmembers" add_meta_boxes_{custom_post_type}
เบ็ดจะถูกเรียก ดู http://codex.wordpress.org/Function_Reference/add_meta_boxสำหรับadd_meta_box()
ฟังก์ชั่น ในการเรียกของข้างต้นadd_meta_box()
คือprefix_teammembers_metaboxes_html
การโทรกลับเพื่อเพิ่มเขตข้อมูลแบบฟอร์มของคุณ:
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
}
ในขั้นตอนที่สองคุณมีฟิลด์ที่กำหนดเองของคุณไปยังฐานข้อมูล เกี่ยวกับการบันทึกsave_post_{custom_post_type}
เบ็ดถูกเรียก (ตั้งแต่ v 3.7 ดู: /programming/5151409/wordpress-save-post-action-for-custom-posts ) คุณสามารถขอสิ่งนี้เพื่อบันทึกฟิลด์ที่คุณกำหนดเอง:
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' );