Jak wyświetlić wartość niestandardowych pól na stronie

17

Mam niestandardowy typ postu o nazwie „oprogramowanie”, w którym znajdują się różne niestandardowe pola, takie jak napisy, cena, zrzuty ekranu, link do pobrania itp. Stworzyłem funkcję umożliwiającą korzystanie z okna edycji tinyMCE dla niektórych z tych niestandardowych pól. Próbowałem wyświetlić te pola na stronie, ale bez powodzenia.

Metoda, której używam jest następująca:

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

Oto link do strony.

Poniżej <hr/>na stronie znajduje się lista wszystkich utworzonych meta. TYLKO jednym z pól, które zostaną wyświetlone, jest „cena” z jakiegoś dziwnego powodu.

Czy ktoś ma pojęcie, czego mi brakuje?

dvmac01
źródło
jest to rzeczywiście get_post_meta()funkcja i jeśli wywołujesz ją w pętli, powinna ona działać ... Chyba że nie używasz właściwej nazwy pola niestandardowego. Często mają prefiks, jeśli są implementowane za pomocą wtyczki takiej jak meta-box. Czy możesz opublikować kod, w którym deklarujesz pola niestandardowe? Rozwiązaniem byłoby otwarcie tabeli wp_postmeta w PhpMyAdmin i przeszukanie kolumny meta_keyLIKE% ...% i określenie „podtytuł” ​​jako wartości meta_key. Zobaczysz dokładnie pod jaką nazwą Wordpress przechowuje twoje niestandardowe pole.
pixeline
Wiem, że to stare, ale używam tej sql, aby uzyskać listę wszystkich pól meta w phpmyadmin: WYBIERZ m.meta_key Z wp_postmeta m GROUP BY m.meta_key
ssaltman

Odpowiedzi:

17

Cóż, używasz:

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

Mówisz więc do Wordpress, aby uzyskać wartość meta pola „napisów” i że zwracana wartość ma format ciągu. Zobacz get_post_meta () docu .

Aby uzyskać wszystkie metadane postu, należy zamiast tego użyć funkcji get_post_custom () . Na przykład, jeśli jesteś w pętli:

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

Spowoduje to zwrócenie wszystkich metadanych wpisu. Jeśli chcesz na przykład sprawdzić pole meta „cena”:

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
}
cybmeta
źródło
Brak ostatniego bloku kodu a)
carbide20
1
wygląda na to, że $custom['price']zwraca tablicę, więc być może trzeba to zrobić$custom['price'][0]
wal
3

użyj tego kodu, aby rozwiązać problem.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
prempal sharma
źródło