Làm cách nào để thêm trường tùy chỉnh vào loại bài tùy chỉnh?


18

Ok, vì vậy tôi đã đăng ký một vài loại bài tùy chỉnh và một vài nguyên tắc phân loại. Bây giờ, đối với cuộc sống của tôi, tôi không thể tìm ra mã tôi cần để thêm Trường tùy chỉnh vào Loại bài đăng tùy chỉnh của mình.

Tôi cần một thả xuống và một khu vực văn bản dòng duy nhất. Nhưng tôi cũng cần phải có các trường riêng cho các loại bài. Vì vậy, giả sử bài loại một có 3 trường và bài loại 2 có 4 trường nhưng các trường khác nhau.

Bất kỳ lời khuyên nào cũng có thể giúp tôi xem xét codex và tìm thấy thứ gì đó nhưng không thể hiểu ý tôi cần thêm vào functions.phptập tin của mình


Câu trả lời:


19

Điều này có lẽ phức tạp hơn bạn nghĩ, tôi sẽ xem xét sử dụng một khung:

Nếu bạn muốn viết riêng của bạn, đây là một số hướng dẫn phong nha:


1
thực sự nó sẽ rất khó Tôi nghĩ rằng nó sẽ đơn giản như việc thêm mã đăng ký vào các chức năng của tôi giống như chúng ta làm với các loại bài đăng và phân loại.
xLRDxREVENGEx

1
Tôi sẽ cộng một câu trả lời này, nhưng nó không quá phức tạp. Liên kết thinkv Vitamin.com thực hiện một công việc tuyệt vời giải thích cách thêm metaboxes và lưu chúng. Liên kết sltaylor.co.uk là một hướng dẫn tuyệt vời về việc sử dụng một số thực hành mã hóa tuyệt vời. Lời cảnh báo của tôi là cẩn thận khi sử dụng save_postmóc. Nó được gọi vào những thời điểm kỳ lạ. Đảm bảo đặt biến WP_DEBUG thành true để xem các lỗi tiềm ẩn phát sinh khi sử dụng nó.
BOTmanz

1
Chỉ cần một bản cập nhật tôi đã sử dụng liên kết thinkv vitamin và điều đó đã giúp ích rất nhiều và đó là một bước đi trong việc thiết lập các trường tùy chỉnh
xLRDxREVENGEx

25

Thêm / chỉnh sửa supportsđối số (trong khi sử dụng register_post_type) để bao gồm custom-fieldsmàn hình chỉnh sửa bài đăng của loại bài đăng tùy chỉnh của bạn:

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

Nguồn: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields


2
Bạn có thể vui lòng giải thích tại sao điều này có thể giải quyết vấn đề?
s_ha_dum

1
Vâng, điều này hoạt động. Ai -1'ed câu trả lời. Bạn có thể vui lòng lấy lại không? Trân trọng,
Qadir

6
...và sau đó.........?
Đánh dấu

9

Mặc dù bạn phải thêm một số xác nhận, nhưng hành động này dường như không phức tạp đối với phiên bản hiện tại của WordPress.

Về cơ bản, bạn cần hai bước để thêm Trường tùy chỉnh vào Loại bài tùy chỉnh:

  1. Tạo một metabox chứa Trường tùy chỉnh của bạn
  2. Lưu trường tùy chỉnh của bạn vào cơ sở dữ liệu

Các bước này được mô tả toàn cầu tại đây: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type

Thí dụ:

Thêm Trường tùy chỉnh được gọi là "chức năng" vào Loại bài đăng tùy chỉnh được gọi là "tiền tố nhóm".

Đầu tiên thêm 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' );

Nếu bạn thêm hoặc chỉnh sửa "đồng đội tiền tố", add_meta_boxes_{custom_post_type}hook sẽ được kích hoạt. Xem http://codex.wordpress.org/Function_Reference/add_meta_box để biết add_meta_box()chức năng. Trong cuộc gọi trên add_meta_box()prefix_teammembers_metaboxes_html, một cuộc gọi lại để thêm trường biểu mẫu của bạn:

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
}

Trong bước thứ hai, bạn có trường tùy chỉnh vào cơ sở dữ liệu. Khi lưu save_post_{custom_post_type}hook được kích hoạt (kể từ phiên bản 3.7, hãy xem: /programming/5151409/wordpress-save-post-action-for-custom-posts ). Bạn có thể móc cái này để lưu trường tùy chỉnh của bạn:

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' );   

"tại sao prefix_teammembers_save_post được kích hoạt bằng cách thêm mới?" Bạn đã tìm thấy một câu trả lời, tôi cũng đang vấp phải một trình kích hoạt chức năng bổ sung mà tôi không thể nhớ lại?
alex

"Thêm trường tùy chỉnh được gọi là 'hàm" vào Loại bài đăng tùy chỉnh được gọi là' tiền tố nhóm '. "" Được gọi là "nghĩa là gì? Tên? Singular_name? Nhãn có thể là chuỗi được sử dụng làm đối số đầu tiên trong register_post_type hoặc có thể không quan trọng nó là gì miễn là nó phù hợp.
arnoldbird

1

Có nhiều plugin khác nhau cho các hộp meta tùy chỉnh và các trường tùy chỉnh. Nếu bạn xem một plugin tập trung vào các nhà phát triển, thì bạn nên thử Meta Box . Nó nhẹ và rất mạnh.

Nếu bạn đang tìm kiếm một hướng dẫn về cách viết mã cho hộp meta / trường tùy chỉnh, thì đây là một khởi đầu tốt. Đây là phần đầu tiên của loạt bài có thể giúp bạn tinh chỉnh mã để dễ dàng mở rộng.


-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' );

Kiến thức hoàn hảo

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.