Sự khác biệt giữa tệp đính kèm trong wp_posts và tệp đính kèm trong wp_postmeta là gì?


7

Sau khi các sản phẩm giả Wooc Commerce được nhập, tôi nhận thấy rằng trong cơ sở dữ liệu, có các bản ghi khác nhau trong các bảng khác nhau nhưng chỉ vào tệp đính kèm ảnh CÙNG.

Câu hỏi là tại sao? Sự khác biệt giữa những hồ sơ là gì? Đó có phải là sự trùng lặp / dự phòng trong việc lưu trữ dữ liệu không?

Hãy post_id=16chụp ảnh dưới đây. Chúng ta sẽ thấy như dưới đây.

  1. Trong bảng wp_posts, bài đăng id = 16 có post_type= tệp đính kèm và các guidđiểm của nó tới T1_front_1.jpghình ảnh.

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

  1. Trong bảng wp_postmeta, người có post_id = 16 cũng lấy meta_keyas _wp_attachment_filemeta_valuetrỏ đến cùng một hình ảnh T1_front_1.jpg .

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

Câu trả lời:


11

Tệp đính kèm Bài đăng

Bảng bài viết chứa thông tin về bài đăng đính kèm .

Trong WordPress mỗi phương tiện truyền thông tải lên có bài entry riêng của nó, nơi post_type'attachment'post_status'inherit'.

Trong thực tế, bạn có thể nhận các loại bài đăng đính kèm bằng các hàm được sử dụng để nhận các loại bài đăng khác, như bài đăng, trang hoặc bất kỳ CPT nào.

Điều đó bao gồm WP_Query, get_posts()get_post().

Có gì trong postsbàn

Đối với mỗi bài viết đính kèm

  • post_titlecột được sử dụng cho tiêu đề đính kèm
  • post_excerptđược sử dụng cho chú thích đính kèm
  • post_contentđược sử dụng để mô tả tệp đính kèm

Lưu ý rằng loại bài đăng đính kèm có thể có một post_parentđiểm trỏ đến ID của bài đăng nơi tệp đính kèm được tải lên từ đó.

Ví dụ:

get_posts( 'post_type=attachment&post_parent=10' );

Truy xuất tất cả các đối tượng bài đăng cho các tệp đính kèm được tải từ trang chỉnh sửa của bài đăng có ID 10;

Một tệp đính kèm không chỉ là một bài

Tuy nhiên, có thông tin cho phương tiện (đặc biệt là hình ảnh) chỉ đơn giản là không phù hợp với bảng bài viết.

Tất cả thông tin này được lưu trữ trong bảng postmeta, trong đó post_idcột đề cập đến hàng đính kèm trong bảng bài viết.

Có gì trong postmetabàn

Ví dụ: "alt"thuộc tính được lưu trữ trong trường meta có khóa '_wp_attachment_image_alt'.

Trường meta có khóa '_wp_attached_file'chứa đường dẫn tương đối (đến thư mục nội dung) của tệp được tải lên.

Được sử dụng để xây dựng các URL tập tin đính kèm và đường dẫn, trong các chức năng như wp_get_attachment_url(), wp_get_attachment_image_src(), get_attached_file()và vân vân.

Cuối cùng, trường '_wp_attachment_metadata'chứa thông tin khác nhau (trong một mảng được tuần tự hóa trong cơ sở dữ liệu):

  • Kích thước hình ảnh (dưới phím 'width''height')
  • Thông tin về kích thước trung gian

Kích thước trung gian

Trên thực tế, mỗi khi hình ảnh được tải lên, WordPress sẽ tạo ra các bản sao khác nhau của hình ảnh với các kích cỡ khác nhau.

Xin vui lòng đọc câu trả lời này để biết thêm chi tiết.

Khóa "sizes"trong '_wp_attachment_metadata'trường chứa một mảng với thông tin về tất cả các hình ảnh được tạo: tệp được tạo, kích thước (chiều rộng và chiều cao), v.v.

Lưu ý rằng cách ưa thích để lấy thông tin '_wp_attachment_metadata'không phải là sử dụng chung get_post_meta() mà là cụ thể wp_get_attachment_metadata(), vì nó kích hoạt bộ lọc.

Nếu bạn quan tâm đến thông tin về một hình ảnh được tạo cụ thể, chức năng image_get_intermediate_size()sẽ có ích.

Sử dụng các chức năng cụ thể

Nói chung, nếu bạn cần thông tin về tệp đính kèm, hãy sử dụng các chức năng cụ thể và tránh lấy dữ liệu từ cơ sở dữ liệu; nó khó hơn và không kích hoạt các hook, có thể phá vỡ tính tương thích cốt lõi, chủ đề và plugin.

rất nhiều chức năng trong WordPress để làm việc với các tệp đính kèm, điều này sẽ cho bạn một ý tưởng ...

Tuy nhiên, tất cả các chức năng chính được liệt kê trong câu trả lời này.


Cảm ơn bạn đã giải thích đầy đủ. Tóm lại, bạn có thể nói cho sự khác biệt một lần nữa xin vui lòng. Tôi đang sai lầm.
Nam G VU

2 bảng chứa thông tin khác nhau. Bảng bài viết chứa một số thông tin, bảng postmeta chứa một số thông tin khác . Để biết toàn bộ câu chuyện về một tệp đính kèm, bạn cần thông tin từ cả hai bảng.
gmazzap

1

Đầu tiên là hiển thị đường dẫn tệp đính kèm, thứ hai là kích thước thuộc tính tệp, loại, chiều cao, chiều rộng, v.v.

Cảm ơn

tệp đính kèm trong wp_post hiển thị tệp đính kèm chi tiết cơ bản tiêu đề, thời gian, tác giả, v.v.

wp_postmeta hiển thị tệp đính kèm tất cả các chi tiết khác, ví dụ tệp đính kèm sẽ là văn bản, pdf, hình ảnh, v.v ... để nó có dữ liệu meta khác nhau cho các loại bài đăng khác nhau.

Cảm ơn

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.