Cách hiển thị giá trị của các trường tùy chỉnh trong trang


17

Tôi có một loại bài đăng tùy chỉnh được gọi là 'phần mềm', có trong các trường tùy chỉnh khác nhau như phụ đề, giá, ảnh chụp màn hình, liên kết tải xuống, v.v. Tôi đã tạo một chức năng để cho phép sử dụng cửa sổ chỉnh sửa tinyMCE cho một số trường tùy chỉnh này. Tôi đã cố gắng hiển thị các trường này trên trang nhưng không thành công.

Phương pháp tôi đang sử dụng là:

<h1><?php the_title();?></h1>
<h3><?php echo get_post_meta(get_the_ID(), 'subtitle', TRUE); ?></h3>

Đây là một liên kết đến trang.

Bên dưới <hr/>trang trên là danh sách tất cả các meta được tạo. CHỈ một trong các trường sẽ hiển thị là 'giá' vì một số lý do lạ.

Bất cứ ai có bất cứ ý tưởng những gì tôi đang thiếu?


Đây thực sự là get_post_meta()chức năng và nếu bạn gọi nó trong vòng lặp, nó sẽ hoạt động ... Trừ khi bạn không sử dụng đúng tên trường tùy chỉnh. Chúng thường đi kèm với tiền tố nếu chúng được triển khai thông qua một plugin như meta-box. Bạn có thể gửi mã làm thế nào bạn khai báo các lĩnh vực tùy chỉnh của bạn? Một giải pháp sẽ là mở bảng wp_postmeta trong PhpMyAdmin và tìm kiếm cột meta_keycho %% ...% và chỉ định "phụ đề" làm giá trị meta_key. Bạn sẽ thấy chính xác dưới tên Wordpress đang lưu trữ trường tùy chỉnh của bạn.
pixeline

Tôi biết cái này đã cũ, nhưng tôi sử dụng sql này để lấy danh sách tất cả các trường meta trong phpmyadmin: CHỌN m.meta_key TỪ wp_postmeta m NHÓM THEO m.meta_key
ssaltman

Câu trả lời:


17

Vâng, bạn đang sử dụng:

get_post_meta(get_the_ID(), 'subtitle', TRUE);

Vì vậy, bạn đang nói với Wordpress để lấy giá trị meta của trường 'phụ đề' và giá trị được trả về phải ở định dạng chuỗi. Xem tài liệu get_post_meta () .

Để có được tất cả dữ liệu meta của bài đăng, bạn nên sử dụng hàm get_post_custom () . Ví dụ: nếu bạn ở trong vòng lặp:

$custom = get_post_custom();
foreach($custom as $key => $value) {
     echo $key.': '.$value.'<br />';
}

Điều này sẽ trả về tất cả dữ liệu meta của bài viết. Nếu bạn muốn kiểm tra, ví dụ: trường meta "giá":

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
}

Khối mã cuối cùng bị thiếu a)
carbide20

1
có vẻ như $custom['price']trả về một mảng vì vậy bạn có thể cần phải làm$custom['price'][0]
wal

3

sử dụng mã này để giải quyết vấn đề của bạn

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
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.