WordPress.org

Ready to get started?Download WordPress

Forums

List pages & order by custom field value (1 post)

  1. mpushkin
    Member
    Posted 3 years ago #

    I have a request that I've seen multiple times but I didn't really seem to get the answer I was looking for. A lot of it may be because I'm new with php and its difficult to grasp. BUT... I am trying to understand better which is why I'm asking this question myself and hoping for a somewhat simple solution. I hope that, if I can find a solution to change the code that I currently have, that I will better understand why and how the change in code works.

    I have a page template that I created that shows a list of child and grandchild pages based on the code I found in the support forums.

    I added my code to coincide with my CSS to display the way I want it to:

    <?php
    $postid = $post->ID;
    $args = array(
    'post_type' => 'page',
    'post_status' => 'publish',
    'orderby' => 'rand',
    'posts_per_page' => -1,
    'post_parent' => $postid
    );
    $child_level = get_posts($args);
    if($child_level) :
    foreach($child_level as $child_page) :
    
    $args = array(
    'post_type' => 'page',
    'post_status' => 'publish',
    'orderby' => 'rand',
    'posts_per_page' => -1,
    'post_parent' => $child_page->ID
    );
    $my_query = null;
    $my_query = new WP_Query($args);
    if( $my_query->have_posts() ) {
    while ($my_query->have_posts()) : $my_query->the_post(); ?>
    
    <div id="individual-product-wrapper">
    <div id="product-title">
    <a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
    </div>
    
    <div id="product-thumb">
    <?php
    $img = get_post_meta($post->ID, 'image_url', true);
    if ($img == '')
    { ?>
    <a href="<?php the_permalink() ?>"><img src="No-Image-Available.gif" width="200px" height="200px" style="border:1px solid black;"></a>
    <?php } else { ?>
    <a href="<?php the_permalink() ?>"><img src="<?php echo get_post_meta($post->ID, 'image_url', true); ?>" width="200px" height="200px" style="border:1px solid black;"></a>
    <?php } ?>
    </div>
    
    <div id="product-status">
    Status: <?php echo get_post_meta($post->ID, 'product_status', true); ?>
    </div>
    
    </div>
    <?php endwhile;
    }
    wp_reset_query();
    
    endforeach;
    endif;
    ?>

    Now I completely understand that 'orderby' => 'rand', means that it will display the list in random order. I would like to know if there is a simple solution for me to order by a custom field. The last snipet of code displays the custom field "product_status" I would like to add a number value like "status_number" and have it display that in descending order.

    I guess something like this:

    'orderby' => 'status_number',
    'order' => 'desc',

    What do I need to do to have 'orderby' recognize my custom field 'status_number'then say, take all status_number equaling 3 and display them first, then 2 then 1?

Topic Closed

This topic has been closed to new replies.

About this Topic