Trong khi làm việc với một dự án nơi chúng tôi tạo ra một phòng trưng bày rất mát mẻ được cung cấp bởi các tệp đính kèm WordPress và loại bài đăng tùy chỉnh, chúng tôi đã tìm thấy nhu cầu thêm các trường bổ sung vào trình tải lên WordPress media. Những trường bổ sung này cho phép chúng tôi cung cấp cho mỗi nhiếp ảnh gia tín dụng bằng cách thêm tên nhiếp ảnh gia và URL của họ trên mỗi trang hình ảnh. WordPress lưu trữ hình ảnh dưới dạng bài đăng trong loại bài đăng đính kèm, vì vậy thêm dữ liệu meta cũng giống như thêm các trường tùy chỉnh. Vì tệp đính kèm WordPress không có trường UI tuỳ chỉnh nên chúng tôi phải thêm trường tùy chỉnh vào trình tải lên media để thu thập dữ liệu meta. Trong bài này, chúng tôi sẽ chỉ cho bạn cách thêm các trường bổ sung vào WordPress Media Uploader.
Chúng tôi sẽ sử dụng các bộ lọc sau để thực hiện thay đổi: attachment_fields_to_edit và attachment_fields_to_save
Đối với một dự án như thế này, chúng tôi khuyên bạn nên tạo một plugin cụ thể cho trang web và thêm mã sau đây. Tuy nhiên, bạn vẫn có thể thêm các mã trong tệp tin functions.php của chủ đề để làm việc.
/ ** * Thêm Tên Nhiếp ảnh và các trường URL để tải lên phương tiện truyền thông * * @param $ form_fields array, các trường để bao gồm trong dạng tệp đính kèm * @param $ post đối tượng, hồ sơ đính kèm trong cơ sở dữ liệu * @gồm $ form_fields, sửa đổi các trường mẫu * / chức năng be_attachment_field_credit ($ form_fields, $ post) { $ form_fields ['be-photographer-name'] = mảng ( 'label' => 'Nhiếp ảnh gia Tên', 'input' => 'văn bản', 'value' => get_post_meta ($ post-> ID, 'be_photographer_name', đúng), 'help' => 'Nếu được cung cấp, hình tín dụng sẽ được hiển thị', ); $ form_fields ['be-photographer-url'] = mảng ( 'label' => 'Photographer URL', 'input' => 'văn bản', 'value' => get_post_meta ($ post-> ID, 'be_photographer_url', đúng), 'help' => 'Thêm URL Nhiếp ảnh', ); return $ form_fields; } add_filter ('attachment_fields_to_edit', 'be_attachment_field_credit', 10, 2); / ** * Lưu giá trị của Tên Nhiếp ảnh và URL trong trình tải lên media * * @param $ post array, dữ liệu đăng cho cơ sở dữ liệu * @param $ attachment array, trường đính kèm từ mẫu $ _POST * @return $ mảng đăng, sửa đổi dữ liệu đăng * / chức năng 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', esc_url ($ attachment ['be-photographer-url'])); trả lại $ bài đăng; } add_filter ('attachment_fields_to_save', 'be_attachment_field_credit_save', 10, 2); ?>
Đoạn mã ở trên sẽ thêm hai trường văn bản vào Trình tải lên Media được gọi là Tên Nhiếp ảnh và URL Nhiếp ảnh gia. Bạn có thể thấy rằng trong ảnh chụp màn hình dưới đây:
Giải thích về mã: Trong chức năng đầu tiên, chúng tôi chỉ đơn giản sử dụng một mảng để xác định nhãn của trường, loại nhập, giá trị và văn bản trợ giúp. Chức năng thứ hai là kiểm tra để xem nếu một giá trị đã được thiết lập cho các lĩnh vực đó. NẾU giá trị được đặt, sau đó siêu dữ liệu bài được cập nhật.
Nếu bạn muốn hiển thị các trường trong mẫu tệp đính kèm của mình, sau đó chỉ cần dán mã sau vào vòng lặp:
echo get_post_meta ($ post-> ID, 'be_photographer_url', đúng);
Nếu bạn muốn hiển thị các trường cho hình ảnh nổi bật của bạn trong mẫu lưu trữ của bạn hoặc bất kỳ mẫu nào khác, sau đó chỉ cần sử dụng:
echo get_post_theme (get_post_thumbnail_id (), 'be_photographer_url', đúng);
Chúng tôi hy vọng bạn thích bài viết này. Đối với những người không biết làm thế nào để tạo một mẫu của tập tin đính kèm, đừng lo lắng. Trong bài viết tiếp theo, chúng tôi sẽ giới thiệu cách tạo mẫu của tệp đính kèm trong WordPress.
Hat Mẹo để Bill Erickson cho thấy chúng ta làm thế nào để làm điều này.