No problem Keith, thank you very much for looking into that. Unfortunately this solution doesn’t seem to have worked – it hasn’t changed the sorting of the posts at all, so the problem must be elsewhere.
Again, I do appreciate your help! 🙂
Hi Keith, I’m getting ‘Parse error: syntax error’ for the curly bracket at the end of this line:
if ( is_post_type_archive( 'my_custom_post_type' ) && !empty( $query->query['post_type'] == 'my_custom_post_type' ) {
Nothing I have tried seems to fix the issue. Thank you!
Hi Keith,
Thank you for your reply and for helping me out – I really appreciate it
Unfortunately the syntax within your suggested code is throwing errors for me, and I’m not sure why – do you perhaps have any ideas?
Thank you!
It absolutely does – thank you very much indeed for all your help!
Thank you SO much, John – you have been a great help and this seems to be working really well. How then do I apply meta_value_num (so that month ’10’ is greater than month ‘2’ etc?) Adding ‘meta_value_num’ to the orderby array doesn’t seem to work. Here’s what I have now:
function exhibition_pre_get_posts( $query ) {
if( is_admin() ) {
return $query;
}
if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'exhibition' ) {
$meta_query = array(
array(
'year_clause' => array(
'key' => 'year',
'compare' => 'EXISTS'
)
),
array(
'month_clause' => array(
'key' => 'month',
'compare' => 'EXISTS'
)
)
);
$query->set('meta_query', $meta_query);
$query->set('orderby', array('year_clause' => 'DESC', 'month_clause' => 'DESC'));
}
// return
return $query;
}
add_action('pre_get_posts', 'exhibition_pre_get_posts');
Thank you for your reply, John. I did find this post, but couldn’t figure out how to use this in pre_get_posts.
Here’s what I have tried, but of course it doesn’t work:
function exhibition_pre_get_posts( $query ) {
// do not modify queries in the admin
if( is_admin() ) {
return $query;
}
if( isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'exhibition' ) {
$query = new WP_Query( array(
'meta_query' => array(
'relation' => 'AND',
'year' => array(
'key' => 'year',
),
'month' => array(
'key' => 'month',
'compare' => 'EXISTS',
),
),
'orderby' => array(
'year' => 'DESC',
'month' => 'DESC',
)
) );
}
// return
return $query;
}
add_action('pre_get_posts', 'exhibition_pre_get_posts');
I’m sure this is a rookie mistake and a misunderstanding of the fundamentals – I’m still very much a beginner, I’m afraid!
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 Cookie Policy. If you continue to use this site, you consent to our use of cookies.