I have a custom post type (CPT) called property
. I have registered a featured property metabox
for it as explained in this question “How do I create a featured post within a custom post type?”. So a featured property has got meta_key='property_featured'
and meta_value=on
.
What I would like to do is to display all property
posts, but order them by meta_key='property_featured'
. So that featured properties will appear first in the list on the first page. Similar behavior as Sticky Posts
functionality. And all the rest property
posts will be ordered by date created. Also, I need to make sure that pagination is working correctly – treating all the property
posts alltogether. I use custom pagination code explained here. (Hope that makes sense).
I have tried to specify arguments for WP_Query. However, if I specify:
'meta_key' => 'property_featured',
'orderby' => 'meta_value'
then only property
posts with that key are displayed as opposite to all property
posts.
If I delete meta_key
from arguments then the query doesn’t know what to sort them by.
How do I display all the property
posts, making sure that featured
ones appear first and all other property
posts order by published date?
Many thanks,
Dasha
2 Answers
<?php
// query posts
$query_property = query_posts( array(
'orderby' => 'date meta_value' // orderby date AND meta value
) );
// First loop
$query_feat = $query_string.'&meta_value=on&meta_key=property_featured';
// Offset for second loop
$query_all = $query_string.'&offset=3&meta_key=property_featured';
// First loop
if ( $query_feat->have_posts() : while ( $query_feat->have_posts() ) : # etc....
// do stuff
endif;
// Second loop
if ( $query_all->have_posts() : while ( $query_all->have_posts() ) : # etc....
// do stuff
endif;
?>