2011-11-04 42 views
9

Tôi đã tạo loại bài đăng tùy chỉnh. Nó sẽ tải tốt trong bảng điều khiển Wordpress và tôi sẽ có thể lưu nó là tốt. Bây giờ hãy nói rằng đó là một loại bài đăng tùy chỉnh có chứa dữ liệu cho một vài chuỗi và một vài ngày.cách hiển thị dữ liệu tùy chỉnh từ các loại bài đăng tùy chỉnh

Tôi muốn có thể truy xuất các loại bài đăng tùy chỉnh này (mà tôi đã thực hiện bằng cách sử dụng WP_Query và chỉ định post_type cho tên của loại bài đăng tùy chỉnh của tôi). Khi tôi gọi print_r trên đối tượng được trả về, không nơi nào trong đối tượng là dữ liệu tùy chỉnh (chuỗi và ngày tháng) được lưu trữ. Làm thế nào tôi sẽ lấy chúng từ cơ sở dữ liệu?

Tôi đã xem xét hàng giờ và không tìm thấy bất kỳ phương pháp nào để truy xuất dữ liệu này.

Theo yêu cầu: Đây là cách các dữ liệu được lưu trữ:

function update_obituary(){ 
    global $post; 
    update_post_meta($post->ID, "first_name", $_POST["first_name"]); 
    update_post_meta($post->ID, "last_name", $_POST["last_name"]); 
    update_post_meta($post->ID, "birth_date", $_POST["birth_date"]); 
    update_post_meta($post->ID, "death_date", $_POST["death_date"]); 
    update_post_meta($post->ID, "publication_date", $_POST["publication_date"]); 
} 

Chức năng này được gắn liền với móc 'save_post'. Dữ liệu sẽ được hiển thị lại khi tôi mở lại thể loại kiểu bài đăng tùy chỉnh trong chế độ chỉnh sửa. Điều đó có nghĩa là nó được lưu trữ trong cơ sở dữ liệu, phải không?

+0

Vui lòng thêm một số mã. Siêu dữ liệu bổ sung được lưu trữ như thế nào? –

+0

đã thêm mã theo yêu cầu. – Prusprus

Trả lời

9

Nếu siêu dữ liệu hiển thị khi chỉnh sửa bài đăng thuộc loại, thì có, nó phải được lưu trữ thành công trong DB.

Có hai chức năng wp để truy xuất siêu dữ liệu của loại bài đăng tùy chỉnh: get_post_custom_valuesget_post_meta. Sự khác biệt là, get_post_custom_values có thể truy cập các trường tùy chỉnh không phải duy nhất, tức là các trường có nhiều giá trị được liên kết với một khóa duy nhất. Bạn có thể chọn để sử dụng nó cho các lĩnh vực duy nhất cũng mặc dù - câu hỏi về hương vị.

Giả sử, loại bài viết của bạn được gọi là "cáo phó":

// First lets set some arguments for the query: 
// Optionally, those could of course go directly into the query, 
// especially, if you have no others but post type. 
$args = array(
    'post_type' => 'obituary', 
    'posts_per_page' => 5 
    // Several more arguments could go here. Last one without a comma. 
); 

// Query the posts: 
$obituary_query = new WP_Query($args); 

// Loop through the obituaries: 
while ($obituary_query->have_posts()) : $obituary_query->the_post(); 
    // Echo some markup 
    echo '<p>'; 
    // As with regular posts, you can use all normal display functions, such as 
    the_title(); 
    // Within the loop, you can access custom fields like so: 
    echo get_post_meta($post->ID, 'birth_date', true); 
    // Or like so: 
    $birth_date = get_post_custom_values('birth_date'); 
    echo $birth_date[0]; 
    echo '</p>'; // Markup closing tags. 
endwhile; 

// Reset Post Data 
wp_reset_postdata(); 

Một lời cảnh báo, để tránh nhầm lẫn: Rời khỏi boolean trong get_post_meta sẽ làm cho nó trở lại một mảng chứ không phải là một chuỗi. get_post_custom_values luôn trả về một mảng, đó là lý do tại sao, trong ví dụ trên, chúng tôi đang lặp lại số $birth_date[0], thay vì $birth_date.

Ngoài ra tôi hiện không chắc chắn 100%, liệu $post->ID có hoạt động như mong đợi ở trên không. Nếu không, hãy thay thế bằng get_the_ID(). Cả hai nên làm việc, một sẽ chắc chắn. Có thể kiểm tra điều đó, nhưng tiết kiệm cho mình thời gian ...

Vì mục đích hoàn chỉnh, hãy kiểm tra mã số trên WP_Query để biết thêm đối số truy vấn và sử dụng chính xác.

+0

Cảm ơn bạn! Điều đó thật tuyệt! Hy vọng rằng những người khác như tôi bị mắc kẹt cố gắng tìm thông tin sẽ rơi trên trang này :) – Prusprus

+0

Nice! Đã tò mò làm thế nào để làm điều này bản thân mình, câu trả lời rất hữu ích – Alex

+0

Ngạc nhiên để có được một bình luận về một câu trả lời hẹn hò hơn 5 năm trở lại. Đọc nó một lần nữa mặc dù, phần này của WP API đã không thay đổi nhiều - thông tin này thực sự vẫn còn đúng. –

Các vấn đề liên quan