Cum să afișezi valoarea câmpurilor personalizate în pagină

13 sept. 2013, 19:14:43
Vizualizări: 149K
Voturi: 27

Am un tip de postare personalizat numit 'software', care conține diverse câmpuri personalizate precum subtitlu, preț, capturi de ecran, link de descărcare etc. Am creat o funcție pentru a permite utilizarea ferestrei de editare tinyMCE pentru unele dintre aceste câmpuri personalizate. Am încercat să afișez aceste câmpuri în pagină, dar fără succes.

Metoda pe care o folosesc este aceasta:

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

Aici este un link către pagină.

Sub tag-ul <hr/> din pagină există o listă cu toate meta-datele create. Singurul dintre câmpuri care se va afișa este 'price' (preț) din motive necunoscute.

Are cineva vreo idee ce îmi lipsește?

2
Comentarii

este într-adevăr funcția get_post_meta(), iar dacă o apelezi în interiorul loop-ului, ar trebui să funcționeze... Doar dacă nu folosești numele corect al câmpului personalizat. Acestea au adesea un prefix dacă sunt implementate prin intermediul unui plugin precum meta-box. Poți posta codul cum declari câmpurile tale personalizate? O soluție ar fi să deschizi tabela wp_postmeta în PhpMyAdmin și să cauți în coloana meta_key pentru LIKE %...% și să specifici "subtitle" ca valoare meta_key. Vei vedea exact sub ce nume Wordpress îți stochează câmpul personalizat.

pixeline pixeline
13 sept. 2013 19:37:39

Știu că această întrebare este veche, dar folosesc acest sql pentru a obține o listă cu toate câmpurile meta în phpmyadmin: SELECT m.meta_key FROM wp_postmeta m GROUP BY m.meta_key

ssaltman ssaltman
10 nov. 2015 17:31:26
Toate răspunsurile la întrebare 2
2
30

Deci, tu folosești:

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

Astfel, îi spui WordPress să obțină valoarea meta a câmpului 'subtitle' și ca valoarea returnată să fie în format de string. Vezi documentația get_post_meta().

Pentru a obține toate metadatele unui post, ar trebui să folosești funcția get_post_custom(). De exemplu, dacă ești în interiorul loop-ului:

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

Aceasta va returna toate metadatele postului. Dacă vrei să verifici, de exemplu, câmpul meta "price":

if(isset($custom['price'])) {
    echo 'Preț: '.$custom['price'][0];
}
13 sept. 2013 19:41:29
Comentarii

Ultimul bloc de cod lipsește un )

Dan Hennion Dan Hennion
29 apr. 2018 02:37:31

se pare că $custom['price'] returnează un array așa că poate fi necesar să folosești $custom['price'][0]

wal wal
25 iun. 2019 17:41:15
0

folosește acest cod pentru a rezolva problema ta.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
30 iul. 2015 10:15:27