Support

Account

Home Forums General Issues Filtering WP_Query results by select field Reply To: Filtering WP_Query results by select field

  • I really appreciate your help John.

    Unless I have misunderstood, the above doesn’t work. I feel like the if statement needs be before echoing out the category name, else it will continue to echo out regardless of whether it has posts.

    function honour_roll_loop() {
        //Args for Categories
    	$args = array(
        'orderby'           => 'id', 
        'order'             => 'ASC',
    );
         echo "<h1>" . get_the_title() . "</h1>";
        $terms = get_terms("category",$args);
        $count = count($terms);
        
    if ( $count > 0 ){
        foreach ( $terms as $term ) {
            echo '<h2>' . $term->name . '</h2>';
            echo '<table>';
           $loop = new WP_Query( array( 
                'post_type' => 'recipient',
                'post_per_page' => 100,
                'meta_key' => 'year',
                'orderby' => 'meta_value_num',
                'order' => 'DESC',
                'tax_query' => array(
    
                    array(
                        'taxonomy' => 'category',
                        'field' => 'id',
                        'terms' => $term->term_id
                    )
                ),
                meta_query => array(
                    array(
                        'key' => 'year',
                        'value' => '2008'
                    )
                )
            ));
            // the loop
            if($loop->have_posts()):
            while ($loop->have_posts()) : $loop->the_post();
            
            //Variables
    		$year = get_post_meta(get_the_ID() , 'year', true); //custom field
            $org = get_post_meta(get_the_ID() , 'recipient_organisation', true); //custom field
            $awarded = get_field_object('field_564bc3aa81a9f');
                // do loop content
                echo '<tr>';
                echo '<td>' . $year . '</td>';
                echo '<td>' . $awarded['value'] . '</td>';
                echo '<td>' . get_the_title() . '</td>';
                echo '<td>' . $org . '</td>';
                echo '</tr>';
            
            endwhile;
            endif;
            // reset $post so that the rest of the template is in the original context
            wp_reset_postdata();
            echo '</table>';
        }
    }
    }