I working on some WordPress code with the WP Alchemy class, and I’m trying to recall the meta values used in a page template as a comma separated list. However when WP Alchemy Meta Boxes store the values into the domain, they aren’t saved with delimiters nor spaces, so it’s much like: onetwothreefourfive…
Here’s what I have so far:
<?php $meta = get_post_meta(get_the_ID(), $custom_metabox->get_the_id(), TRUE); ?>
<li>Via: <?php foreach ($meta['g2m_via'] as $link) { ?><a href="<?php echo $link['g2m_via-link']; ?>">
<?php
$prefix = ', ';
$words = array();
$words[] = $link['g2m_via-title'];
$words = array_map("unserialize", array_unique(array_map("serialize", $words)));
for($i = 0; $i < count($words); $i++){ $fruitlist = implode(', ', $words); print_r($fruitlist); }
?></a><?php } ?></li>
$link[‘g2m_via-title’] is simply the name of the link that is stored in the meta field, i.e. Link1 would be the name, google,,com would be the link (which is not important here, I have that working). The other variables are all there. The $prefix variable does nothing, it was meant to act as a separator, like: $val .= $prefix . ” $link[‘g2m_via-title’]; . ”; however, it causes: Link1, Link 1,Link 2, Link 1, Link 2, Link 3.
So far with that code, I’ve gotten the closest to what I want:
Link1Link2Link3
But it needs to be: Link1, Link2, Link3
, and so on without the comma on the last link title.
Output of var_dump($link):
array(2) {
["g2m_via-title"]=> string(7) "JoyStiq"
["g2m_via-link"]=> string(22) "joystiq.com";
}JoyStiq
array(2) {
["g2m_via-title"]=> string(9) "GrindGadget"
["g2m_via-link"]=> string(16) "grindgadget.com";
} GrindGadget
array(2) {
["g2m_via-title"]=> string(13) "Engadget"
["g2m_via-link"]=> string(13) "engadget.com";
} Engadget
What I WANT it to look like so [“g2m_via-title”] will stop duplicating:
array[1] {
["g2m_via-title"]=> "JoyStiq"
["g2m_via-link"]=> "joystiq.com";
}
array[2] {
["g2m_via-title"]=> "GrindGadget"
["g2m_via-link"]=> "grindgadget.com";
}
array[3] {
["g2m_via-title"]=> "Engadget"
["g2m_via-link"]=> "engadget.com";
}
3 of the countless other pieces of code that I’ve tried: http://pastebin.com/wa0R8sDw.
Assuming this data structure:
This’ll do:
So will this in PHP 5.3+: