Home › Forums › General Issues › Sorting posts by custom field's custom order
Hi, I’m at a loss with how to sort posts by an order that I choose.
The below code pulls in teachers from a location. I’d like them to sort by their role (a custom field) in this order ‘Director, Lead Teacher, Teacher, Assistant Teacher’.
$facultys = get_posts(array(
‘post_type’ => ‘faculty’,
‘order’ => ‘ASC’,
‘meta_query’ => array(
array(
‘key’ => ‘location’,
‘value’ => ”,
‘compare’ => ‘LIKE’,
),
array(
‘key’=> ‘role’,
‘value’ => ”,
‘compare’ => ‘LIKE’,
)
)
));
It would be this way (notice the orderby and meta_key properties):
$facultys = get_posts(array(
'post_type’ => 'faculty’,
'order’ => 'ASC’,
'orderby' => 'meta_value',
'meta_key' => 'role'
'meta_query’ => array(
array(
'key’ => 'location’,
'value’ => ”,
'compare’ => 'LIKE’,
),
array(
'key’=> 'role’,
'value’ => ”,
'compare’ => 'LIKE’,
)
)
));
But, it seems that you want to order the post in a specific custom order which is not alphabetical or numerical (I’m saying that because ‘Assistant Teacher’ is after ‘Teacher’, while the rest are in a alpha order). In that case, you should create four get_posts queries (it could be the same in a loop, only changing the role value), each query with the specific role.
Like this:
$roles = array('Director', 'Lead Teacher', 'Teacher', 'Assistant Teacher');
Also, roles could be populated from a taxonomy or from a custom post type.
Then:
$location = ''; // to be defined
$facultys = array();
foreach($roles as $role) {
$posts = get_posts(array(
'post_type’ => 'faculty’,
'order’ => 'ASC’,
'meta_query’ => array(
array(
'key’ => 'location’,
'value’ => $location,
'compare’ => 'LIKE’,
),
array(
'key’=> 'role’,
'value’ => $role,
'compare’ => 'LIKE’,
)
)
));
// Merge the posts result with the existing facultys
$facultys = array_merge($facultys, $posts);
}
The topic ‘Sorting posts by custom field's custom order’ is closed to new replies.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Privacy Policy. If you continue to use this site, you consent to our use of cookies.