get_post_meta returnează doar Array

25 mai 2012, 00:49:41
Vizualizări: 28.5K
Voturi: 1

Iată ce încerc să fac:

Încerc să obțin o pagină în WordPress care să extragă date din câmpuri personalizate din alte pagini. Astfel încât atunci când un utilizator creează o pagină și folosește un câmp personalizat specific (în acest caz multiedit_Info), acesta să fie populat în pagina "țintă".

Iată codul cu care lucrez:

<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?>
<div id="info-col">
<?php echo $item; ?>
</div>

În prezent, folosesc un plugin care creează blocuri de conținut folosind câmpuri personalizate. Și vreau să fac astfel încât un utilizator să poată crea o pagină nouă cu câmpurile personalizate și apoi să le afișeze într-un array pe o altă pagină.

Nu sunt sigur dacă am configurat corect sau nu. Este prima dată când folosesc acest lucru, așa că orice ajutor este apreciat. Mulțumesc!

1
Comentarii

Este un array gol? Actualizare: În loc de echo, încearcă <?php print_r( $item ); ?> pentru a vedea.

getWeberForStackExchange getWeberForStackExchange
25 mai 2012 00:53:56
Toate răspunsurile la întrebare 2
5

Când setezi al treilea parametru al funcției get_post_meta() la false, aceasta returnează un array cu toate valorile asociate acelei chei - setând acest parametru la true returnează o singură valoare.

Deci codul tău este corect. Ai obține exact același lucru dacă ai face ceva de genul acesta:

$test = array( "1", "2", "3" );
echo $test; // afișează "Array"

Dacă dorești să vezi conținutul array-ului tău, va trebui să folosești print_r():

$item = get_post_meta( $post->ID, 'multiedit_Info', false );
echo print_r( $item );

Dacă ai face acest lucru cu array-ul $test din exemplul meu de mai sus, ai vedea:

Array
(
    [0] => "1"
    [1] => "2"
    [2] => "3"
)
25 mai 2012 00:55:43
Comentarii

Bine, dacă o schimb la asta:

<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?> <div id="info-col"> <?php print_r( $item ); ?> </div>

Va afișa asta:

Array ( [0] => )

ultraloveninja ultraloveninja
25 mai 2012 01:13:31

OK, asta înseamnă că ai un array gol. Nu există nimic stocat în acea cheie meta pentru acel ID de postare.

EAMann EAMann
25 mai 2012 01:49:17

Deci, va funcționa asta pentru TOATE câmpurile personalizate din pagini sau doar pentru acela? Încerc să obțin TOATE sau ORICE dintre câmpurile personalizate cu acea informație meta.

ultraloveninja ultraloveninja
25 mai 2012 02:31:01

get_post_meta() obține doar informațiile meta pentru un singur articol/pagină. Nu sunt foarte sigur ce încerci să realizezi acum, și nu este foarte clar în întrebarea ta. Poți, te rog, să editezi întrebarea pentru a adăuga câteva clarificări? Nu doar să enumere ce ai încercat, explică în detaliu ce încerci să realizezi.

EAMann EAMann
25 mai 2012 02:39:12

Ok, am editat întrebarea mea. Sper că asta va ajuta puțin.

ultraloveninja ultraloveninja
25 mai 2012 04:05:31
0

Ok, am găsit soluția pe care o căutam aici:

obținerea tuturor valorilor pentru o cheie de câmp personalizat (cross-post).

Folosind funcția menționată în postarea de mai sus și apoi returnând informațiile în template-ul meu prin această comandă:

<?php $my_info = get_meta_values( 'multiedit_Info', 'page' ); ?>

și apoi afișându-le într-un foreach:

<?php foreach ( $my_var as $item) :
echo "<p>$item</p>";
endforeach; ?>

Am obținut toate câmpurile personalizate din toate paginile care le folosesc și le-am afișat într-o singură pagină.

Mulțumesc pentru ajutor!

25 mai 2012 18:48:11