Tạo tiêu chuẩn trường tùy chỉnh trong giao diện người dùng quản trị


7

Tôi đã thêm một vài khác nhau custom_post_typesvào bản cài đặt Wordpress 3 của mình. Tất cả đều khác nhau một chút và nên lưu trữ thông tin độc đáo custom_fields. Nhưng trong khi người ta có thể lưu trữ một product_id, người khác sẽ không. Một sẽ có một source_urlvà một sẽ không. Thay vì phải hướng dẫn các biên tập viên của tôi về các trường tùy chỉnh nên được sử dụng với bài đăng tùy chỉnh nào, làm cách nào tôi có thể làm cho mỗi bài đăng tùy chỉnh bao gồm các trường tùy chỉnh như một phần của chính UI?

Nếu bạn truy cập "Daily_cartoon", bạn sẽ có một màn hình chỉ yêu cầu tiêu đề , chú thíchphương tiện .
Nếu bạn truy cập "Daily_product", bạn sẽ có một màn hình chỉ yêu cầu tiêu đề , giá cả , tóm tắt , v.v.


@Jonathan Sampson : Tôi đang làm việc tất cả các ngày cuối tuần trên một gói để giải quyết vấn đề này (Tôi đã làm việc với nó trong hơn một tháng.) Nhưng tôi có thời hạn vào thứ ba nên không trả lời câu hỏi StackExchange cho tôi vào cuối tuần này. Nếu điều này vẫn chưa được giải quyết vào tuần tới, tôi chắc chắn sẽ giải quyết nó.
MikeSchinkel

@MikeSchinkel Tôi thực sự vẫn đang làm việc trong dự án, vì vậy nếu bạn đã hoàn thành công cụ của mình, tôi sẽ rất vui khi cung cấp cho nó một spin và chia sẻ kinh nghiệm của tôi.
Sampson

Xin chào @Jonathan Sampson : Tôi chưa sẵn sàng để xuất bản nó nhưng tôi có thể làm việc riêng với bạn như là người thử nghiệm beta đầu tiên của tôi nếu bạn muốn. Liên hệ với tôi qua email, địa chỉ email của tôi nằm trên trang hồ sơ người dùng của tôi: wordpress.stackexchange.com/users/89/mikechinkel
MikeSchinkel

Câu trả lời:


4

Xin chào @Jonathan Sampson :

một số plugin để giúp Loại bài đăng tùy chỉnh dễ dàng hơn và một số bổ sung cho phép bạn xác định Trường tùy chỉnh, không theo thứ tự cụ thể:

Như tôi đã đề cập ở trên, tôi đã làm việc trên một giao diện không cung cấp Giao diện người dùng như thế này để thay vào đó là một API mở rộng cho các loại trường phức tạp (và cả các loại đơn giản.) Nhưng sau khi dành một giờ cố gắng để đóng gói, tôi nhận ra rằng nó chưa sẵn sàng để phân phối chưa. Có thể trong một vài tuần.

Các plugin được liệt kê ở trên sẽ đáp ứng nhu cầu cơ bản của bạn ngay bây giờ và tôi sẽ cố gắng làm cho tôi tương thích với dữ liệu được lưu trữ bởi tất cả các plugin này trong tương lai trong trường hợp bạn quyết định sử dụng của tôi trong tương lai.

Bạn cũng có thể tìm thấy bài đăng này một chút giúp đỡ:


Tôi sẽ đánh dấu câu hỏi này và sẽ chờ giải pháp của bạn;)
ariefbayu

@silent : Tuyệt!
MikeSchinkel

5

bạn có thể thêm meta_box để có dữ liệu trường tùy chỉnh được lưu trữ trong đó. vì add_meta_box có thể được đặt theo post_type, điều này sẽ cho phép bạn thêm meta_box khác nhau vào các loại bài đăng khác nhau.

nhìn vào bài đăng này để biết ví dụ đầy đủ về việc thay đổi loại bài đăng mới / chỉnh sửa scree.


0

Gần đây tôi đã cần phải giải quyết một vấn đề rất giống trong khi làm việc trong một chủ đề. Cơ sở của mã là từ bài đăng này và tôi đã sửa đổi một số mã

Sau đây là phần đầu tiên của mã tôi đã sửa đổi.

    add_action('init', 'limited_post_type');
function my_custom_limited_post_type() 
{
  $labels = array(
    'name' => _x('Limited Post Type', 'post type general name'),
    'singular_name' => _x('Film - DVD', 'post type singular name')
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','author','thumbnail','excerpt', 'page-attributes','custom-fields' ),
    'show_in_nav_menus' => true
  ); 
  register_post_type('limited_post_type', $args);
}

Sau đây là phần thứ hai của mã tôi đã sửa đổi.

foreach ( $scope as $scopeItem ) {
       switch ( $scopeItem ) {
           case "post": {
             // Output on any post screen
             if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" || $post->post_type=="post" )
             $output = true;
             break;}              
            case "page": {
                  // Output on any page screen
                  if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="page-new.php" || $post->post_type=="page" )
            $output = true;
            break;}
             case "limited_post_type": {
                                // Output on limited post_type onlye
            if ((basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER['SCRIPT_FILENAME'] )=="post.php" && $post->post_type=="film_dvd" ))
                   $output = true;
                   break;
                  }

Nếu bạn thích xin vui lòng gửi cho tôi một tin nhắn và tôi sẽ vui lòng gửi cho bạn tệp tin.php của tôi để bạn tham khảo. Đây chắc chắn là cách để làm cho nó xảy ra mặc dù tôi đã trải qua nhiều đêm nhổ tóc như chính mình.

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.