0

Here's the website: KunzlerIP

At the bottom of the website, you see a slider using Fancybox. Each thumbnail pops up some content from an individual custom post type post. For this custom post type, I've enabled the following:

    function post_type_lawyers() {
    register_post_type( 'lawyers',
        array( 
            'label' => __('Lawyers'),
            'public' => true,
            'show_ui' => true,
            'hierarchical' => true,
            'supports' => array(
                'title',
                'thumbnail',
                'page-attributes',
                'post-thumbnails',
                'custom-fields',
                'revisions',
                )
        )
    ); //end register_post_type
    register_taxonomy( 'lawyer', 'lawyers', array( 'hierarchical' => true, 'label' => __('Rank') ) );
}
add_action('init', 'post_type_lawyers');

The info for each pop-up is a custom field value and key. Currently, there are 4 values per individual post.

What I would like to do is order these custom field values in the following order:

  • Height
  • Fueled By
  • Favorite Quote
  • Areas of Expertise

If you go through these pop-ups, you'll see that a couple of them don't follow the same order for some reason and I can't figure out how to control how they display.

To call this slider, here's the query:

    <ul id="lawyers">
    <?php query_posts('post_type=lawyers&orderby=date&order=DESC&posts_per_page=-1'); while (have_posts()): the_post(); ?>
        <li>
            <a href="#<?php the_ID(); ?>" class="fancybox"><?php the_title(); echo the_category(); if ( has_post_thumbnail() ) { the_post_thumbnail(); } ?></a>
            <div id="<?php the_ID(); ?>" class="profile"><?php if ( has_post_thumbnail() ) { the_post_thumbnail('large', array('class' => 'baseball')); } ?><h3><?php the_title(); ?></h3><?php echo(the_meta()); ?></div>
        </li>
    <?php endwhile; ?>
</ul>

Does it have something to do with the_meta()?

2
  • This depends more on your query than register post type, it would be better to post that code instead, since it most likely involves something like orderby=meta_value&order=ASC
    – Wyck
    Commented Jul 19, 2011 at 1:22
  • @Wyck, I think I added what you wanted to see, but I'm not sure. Let me know if I still haven't posted it yet.
    – micah
    Commented Jul 19, 2011 at 1:47

1 Answer 1

1

the function the_meta() formats the data into an unordered list and you have no control over the order. Instead you should use get_post_custom() and echo out only the fields you want and in the order you want.

change:

<?php echo(the_meta()); ?>

to :

    $post_custom =  get_post_custom($post->ID);
    echo '<ul>';
    echo '<li>'.$post_custom['Height'].'</li>';
    echo '<li>'.$post_custom['Fueled_By'].'</li>';
    echo '<li>'.$post_custom['Favorite_Quote'].'</li>';
    echo '<li>'.$post_custom['Areas_of_Expertise'].'</li>';
    echo '</ul>';

and change the name of the fields to match yours.

7
  • I tried your method and the only result I got back is the word "array".
    – micah
    Commented Jul 19, 2011 at 18:29
  • 1
    Add [0] after each field eg; $post_custom['Fueled_By'][O]
    – Bainternet
    Commented Jul 19, 2011 at 19:33
  • That's a good start but no dice. I added four [0] values after each field and it only returns the value of the ['Height'] field. Nothing else shows up, including the key. I want both the key and the value to show. Thus, I want the word "Height" and the answer to both show up.
    – micah
    Commented Jul 19, 2011 at 20:06
  • 1
    If you want the key then add the key to the output as for nothing else showing up that means that you didn't change the names of the fields to match yours like i posted.
    – Bainternet
    Commented Jul 19, 2011 at 20:23
  • 1
    I suggest you read and learn a bit about custom fields so you would understand what key or field name means, if you read my answer it says change the names of the fields which means copy paste won't work
    – Bainternet
    Commented Jul 20, 2011 at 4:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.