Làm cách nào để thêm trường tùy chỉnh vào màn hình phương tiện (hình ảnh / thư viện)?


7

Tôi đang cố gắng thêm một trường tùy chỉnh vào màn hình chỉnh sửa ảnh và thư viện.

Tôi biết có những câu hỏi tương tự ở đây, mặc dù câu trả lời không hoạt động với phiên bản hiện tại hoặc chúng chỉ thêm trường vào màn hình tải lên trong khi tôi cần một trường hiển thị trong tất cả các màn hình chỉnh sửa (xem bên dưới).

Đối với điều này, tôi tin rằng, bạn sẽ phải gặp rắc rối với backbone.js nhưattachment_fields_to_edit chỉ thêm vào màn hình tải lên.

Thêm trường với tệp đính kèm_fields_to_edit

Đây là tải lên hình ảnh screeen. Ở đây Phong cách được thêm vào vớiattachment_fields_to_edit bộ lọc và my_field được thêm bằng plugin ACF.

Nhưng họ đang thiếu trong màn hình chỉnh sửa trong bài

nhập mô tả hình ảnh ở đây

Nhấp vào chỉnh sửa trên bài viết thực tế

nhập mô tả hình ảnh ở đây

Không có phong cách & trường my_field!

Câu hỏi

Làm cách nào để thêm các trường để vẫn có chúng trên màn hình chỉnh sửa? Câu trả lời lý tưởng sẽ bao gồm thêm các trường vào màn hình chỉnh sửa thư viện nếu đó là một quá trình tương tự

Câu hỏi này thực sự quan trọng đối với tôi vì vậy tôi sẽ thêm 100 đô la tiền thưởng khi có sẵn.

Cảm ơn!


Bạn đã cố gắng để thực hiện câu trả lời này ?
Howdy_McGee

Nó có hoạt động trên màn hình chỉnh sửa trong bài không? Bởi vì tôi đã thử nhiều câu trả lời từ đây và không có câu trả lời nào attachment_fields_to_edit.
Runnick

Các trường tùy chỉnh, Style & my_field được sử dụng để làm gì? Có nên thêm bất cứ điều gì vào đánh dấu khi hình ảnh được chèn vào trình chỉnh sửa dựa trên các giá trị này không? Có vẻ như các cài đặt trong phương thức Chi tiết hình ảnh được dự định sẽ được lấy từ phần đánh dấu của hình ảnh đang được chỉnh sửa chứ không phải từ chính bài đăng đính kèm. Ví dụ: đặt chú thích thành hình ảnh bằng cách sử dụng Thêm phương tiện> Chi tiết đính kèm> Trường phụ đề, sau đó nhấp vào Chèn vào bài đăng . Bây giờ, chỉnh sửa hình ảnh được chèn bằng cách di chuột qua nó và nhấp vào nút bút chì. thay đổi chú thích và nhấp vào cập nhật.
Dave Romsey

Tiếp theo, quay lại Thư viện phương tiện và xem các cài đặt của hình ảnh. Lưu ý rằng trường chú thích chưa được cập nhật. Việc ngắt kết nối giữa Chế độ chi tiết hình ảnh và cài đặt Chi tiết đính kèm thể hiện vấn đề về khả năng sử dụng. Mặc dù dường như có thể làm những gì bạn đang ở đây, nhưng nó có thể không phải là một ý tưởng tốt để trải qua với nó.
Dave Romsey

1
Bây giờ tôi cũng muốn hỏi những gì @DaveRomsey đã hỏi bạn. Làm thế nào chính xác là bạn đang sử dụng các lĩnh vực này? Làm thế nào chúng được sử dụng cả trong phụ trợ và frontend? Nó đòi hỏi một số công việc để làm cho phương thức chỉnh sửa hoạt động nhưng hoàn toàn có thể vì chúng ta có thể nối vào hành động lưu ảnh, nhưng hãy xem chính xác bạn đang sử dụng các trường này như thế nào? Tại sao cần phải chỉnh sửa trên bài viết?
Rùa

Câu trả lời:


2

Đây là mã làm việc (làm việc tốt cho tôi), bạn đã thử cái này chưa? Chỉ cần thêm vào chủ đề 'Hàm.php' và thay đổi tên trường tùy chỉnh nếu cần.

// chức năng để thêm trường phương tiện tùy chỉnh
chức năng custom_media_add_media_custom_field ($ form_fields, $ post) {
    $ field_value = get_post_meta ($ post-> ID, 'custom_media_style', true);

    $ form_fields ['custom_media_style'] = mảng (
        'giá trị' => $ field_value? $ field_value: '',
        'nhãn' => __ ('Phong cách'),
        'giúp' => __ ('Nhập phong cách của bạn'),
        'đầu vào' => 'textarea'
    );

    trả về $ form_fields;
}
add_filter ('tệp đính kèm_fields_to_edit', 'custom_media_add_media_custom_field', null, 2);

// lưu trường phương tiện tùy chỉnh của bạn
chức năng custom_media_save_attachment ($ Đính kèm_id) {
    if (isset ($ _REQUEST ['tệp đính kèm'] [$ tệp đính kèm] ['custom_media_style'])) {
        $ custom_media_style = $ _REQUEST ['tệp đính kèm'] [$ tệp đính kèm] ['custom_media_style'];
        update_post_meta ($ Đính kèm_id, 'custom_media_style', $ custom_media_style);

    }
}
add_action ('edit_attachment', 'custom_media_save_attachment');

0

Trong các triển khai cá nhân của riêng tôi về chức năng này (không có ACF), đây là cách tôi có thể đạt được bằng cách sử dụng kết hợp attachment_fields_to_editattachment_fields_to_save. Xem GIST

Sử dụng:

add_action( 'after_setup_theme', 'thumbnail_meta' );

function thumbnail_meta(){
  Thumbnail_Meta::create( [
            'html_thumbnail_meta_id'          => [
              'label' => __( '<strong>Featured Settings:</strong>' ),
              'input' => 'html'
            ],
            'checkbox_thumbnail_meta_id'        => [
              'label' => __( 'Checkbox?' ),
              'input' => 'checkbox'
            ],
            'url_thumbnail_meta_id'      => [
              'label' => __( 'Link:' ),
              'type'  => 'url',
            ],
            'select_thumbnail_meta_id' => [
              'label'   => __( 'Display' ),
              'input'   => 'select',
              'options' => [
                'none'   => '-- None --',
                'top'    => 'Content Top',
                'right'  => 'Content Right',
                'left'   => 'Content Left',
                'bottom' => 'Content bottom'
              ]
            ]
          ] );
  }

Tuy nhiên - không thể nói chắc chắn vấn đề là gì mà không thấy mã của bạn.


0

Dưới đây là một mã ví dụ để thêm tên nhiếp ảnh gia và url trong màn hình chỉnh sửa phương tiện.

function be_attachment_field_credit( $form_fields, $post ) {
    $form_fields['be-photographer-name'] = array(
        'label' => 'Photographer Name',
        'input' => 'text',
        'value' => get_post_meta( $post->ID, 'be_photographer_name', true ),
        'helps' => 'If provided, photo credit will be displayed',
    );

    $form_fields['be-photographer-url'] = array(
        'label' => 'Photographer URL',
        'input' => 'text',
        'value' => get_post_meta( $post->ID, 'be_photographer_url', true ),
        'helps' => 'If provided, photographer name will link here',
    );

    return $form_fields;
}

add_filter( 'attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2 );

/**
 * Save values of Photographer Name and URL in media uploader
 *
 * @param $post array, the post data for database
 * @param $attachment array, attachment fields from $_POST form
 * @return $post array, modified post data
 */

function be_attachment_field_credit_save( $post, $attachment ) {
    if( isset( $attachment['be-photographer-name'] ) )
        update_post_meta( $post['ID'], 'be_photographer_name', $attachment['be-photographer-name'] );

    if( isset( $attachment['be-photographer-url'] ) )
        update_post_meta( $post['ID'], 'be_photographer_url', $attachment['be-photographer-url'] );

    return $post;
}

add_filter( 'attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2 );
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.